日期:2014-05-16  浏览次数:20792 次

求求正则!!!!大神救救我。。。。
$str = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";

$reg = "饭煲";
$reg1 = "不复";
$reg2 = "当年";

preg_match_all("/([0-9]+)<(.*".$reg.".*".$reg1.".*)>\|/isU",$str,$arr);
print_r($arr);

求只匹配             1 出电饭煲海不复当年许多下挫  2 不复电线饭煲杆分别当年    3 苏当年丹公司订不复购饭煲
------解决方案--------------------
$str = "111<第一饭煲>
------解决方案--------------------
9<电饭煲海不复当年许多下挫>
------解决方案--------------------
2212<德国的花>
------解决方案--------------------
1321<不复电线饭煲杆分别当年>424
------解决方案--------------------
<苏当年丹公司订不复购饭煲>5
------解决方案--------------------
<sis阿不复司法>";

$reg = "饭煲";
$reg1 = "不复";
$reg2 = "当年";
$sp = explode('
------解决方案--------------------
', $str);
$inArr = array();
foreach ($sp as $key => $value) {
if(strpos($value,$reg) !== FALSE && strpos($value,$reg1) !== FALSE && strpos($value,$reg2) !== FALSE){
array_push($inArr, $value);
}
}
var_dump($inArr);

------解决方案--------------------
$s = "111<第一饭煲>
------解决方案--------------------
9<电饭煲海不复当年许多下挫>
------解决方案--------------------
2212<德国的花>
------解决方案--------------------
1321<不复电线饭煲杆分别当年>424
------解决方案--------------------
<苏当年丹公司订不复购饭煲>5
------解决方案--------------------
<sis阿不复司法>";

preg_match_all('/(?<=<)([^
------解决方案--------------------
>]*(?:(?:饭煲
------解决方案--------------------
不复
------解决方案--------------------
当年)[^
------解决方案--------------------
>]*){3}[^
------解决方案--------------------
>]*)>/U', $s, $r);
print_r($r[1]);
Array
(
    [0] => 电饭煲海不复当年许多下挫
    [1] => 不复电线饭煲杆分别当年
    [2] => 苏当年丹公司订不复购饭煲
)