求求正则大神救救我

WBOY
Freigeben: 2016-06-23 14:00:51
Original
791 Leute haben es durchsucht

$str = "111|9|2212|1321424|5|";

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

preg_match_all("/([0-9]+)\|/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);
Nach dem Login kopieren
Nach dem Login kopieren

$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);
Nach dem Login kopieren
Nach dem Login kopieren

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

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

$s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";preg_match_all('/(?<=<)([^|>]*(?:(?:饭煲|不复|当年)[^|>]*){3}[^|>]*)>/U', $s, $r);print_r($r[1]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[0] => 电饭煲海不复当年许多下挫
[1] => 不复电线饭煲杆分别当年
[2] => 苏当年丹公司订不复购饭煲
)
徐老大这个存在缺陷 3个相同的也可以 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);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[1] => 9<电饭煲海不复当年许多下挫>
[3] => 1321<不复电线饭煲杆分别当年>424
[4] => <苏当年丹公司订不复购饭煲>5
)

$s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";preg_match_all('/(?<=<)([^|>]*(?:(?:饭煲|不复|当年)[^|>]*){3}[^|>]*)>/U', $s, $r);print_r($r[1]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[0] => 电饭煲海不复当年许多下挫
[1] => 不复电线饭煲杆分别当年
[2] => 苏当年丹公司订不复购饭煲
)
老大 你这正则符合需求,,,可是我现在同时想把前面的数字取出来,因为这是数据ID....

形式语言尤其自己的规则

$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);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[1] => 9<电饭煲海不复当年许多下挫>
[3] => 1321<不复电线饭煲杆分别当年>424
[4] => <苏当年丹公司订不复购饭煲>5
)
$s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>|424<苏当年丹公司订不复购饭煲>|5";

形式语言尤其自己的规则

$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);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
    [1] => 9
    [3] => 1321424
    [4] => 5
)
老大你的正则太高端了,乱摸了半天总算自己摸出来了 
可是下次还是不会 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage