求一段正则表达式,该怎么处理
时间:2021-07-01 10:21:17
帮助过:19人阅读
求一段正则表达式
[淘宝商城]
活动标题
……
……
我希望通过正则 将上面的内容 变成一串数组
array(
[0] =>array(
"shopname" => "淘宝商城",
"activename"=> "活动标题",
"actimage" => "http://image.com/pic.gif",
"acturl" => "http:/www.tmall.com/" //这个是活动标题的链接
),
[1] =>array(……)
……
);
就像上面一样输出数组
------解决方案--------------------
只用正则达到你的要求似乎不太可能。要处理一下。我贴下匹配结果。处理自己补充:
PHP code
$str=<<
-
[淘宝商城]
活动标题
-
……
……
html;
preg_match_all('#- ]*>(.*)
#isU',$str,$arr);
foreach($arr[1] as $v){
preg_match_all('#]*>(.*)#isU',$v,$ar[]);
}
print_r($ar);
------解决方案--------------------
PHP code
$str = <<
-
[淘宝商城1]
活动标题
-
[淘宝商城2]
活动标题
HTML;
/**
*"shopname" => "淘宝商城",
"activename"=> "活动标题",
"actimage" => "http://image.com/pic.gif",
"acturl" => "http:/www.tmall.com/" //这个是活动标题的链接
*/
$pattern = '~img.*(?<=")(.*)".*\[(.*)\].*(?<=f=")(.*)".*(?<=e=")(.*)"~Uis';
preg_match_all($pattern, $str, $m);
$res = array();
$num = 4;//匹配项数量
for ($i = 0; $i < count($m[0]); $i++){
for ($j = 1; $j <= $num; $j++){
$res[$i][] = $m[$j][$i];
}
}
echo '
';
print_r($res);
echo '
';
/**
剩下的你懂的
Array
(
[0] => Array
(
[0] => http://image.com/pic.gif1
[1] => 淘宝商城1
[2] => http://www.tmall.com/1
[3] => 活动标题1
)
[1] => Array
(
[0] => http://image.com/pic.gif2
[1] => 淘宝商城2
[2] => http://www.tmall.com/2
[3] => 活动标题2
)
)
*/