$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);

解决方案 »

  1.   

    正则行吗?因为这个文本可能1MB 或更多,用数组效率高还是正则效率高?
    这个和正则比起来哪个效率高?? 如果数组量有1W个?文本正则
      

  2.   

    $s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";preg_match_all('/(?<=<)([^|>]*(?:(?:饭煲|不复|当年)[^|>]*){3}[^|>]*)>/U', $s, $r);
    print_r($r[1]);Array
    (
        [0] => 电饭煲海不复当年许多下挫
        [1] => 不复电线饭煲杆分别当年
        [2] => 苏当年丹公司订不复购饭煲
    )
      

  3.   

    形式语言尤其自己的规则
    $s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";$a = explode('|', $s);
    $d = array("饭煲", "不复", "当年");foreach($d as $c) $a = preg_grep("/$c/", $a);
    print_r($a);Array
    (
        [1] => 9<电饭煲海不复当年许多下挫>
        [3] => 1321<不复电线饭煲杆分别当年>424
        [4] => <苏当年丹公司订不复购饭煲>5
    )
      

  4.   

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