Home > Backend Development > PHP Tutorial > 求求正则大神救救我

求求正则大神救救我

WBOY
Release: 2016-06-23 14:00:51
Original
817 people have browsed it

$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);
Copy after login
Copy after login

$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);
Copy after login
Copy after login

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

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

$s = "111<第一饭煲>|9<电饭煲海不复当年许多下挫>|2212<德国的花>|1321<不复电线饭煲杆分别当年>424|<苏当年丹公司订不复购饭煲>5|<sis阿不复司法>";preg_match_all('/(?<=<)([^|>]*(?:(?:饭煲|不复|当年)[^|>]*){3}[^|>]*)>/U', $s, $r);print_r($r[1]);
Copy after login
Copy after login
Copy after login
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);
Copy after login
Copy after login
Copy after login
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]);
Copy after login
Copy after login
Copy after login
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);
Copy after login
Copy after login
Copy after login
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);
Copy after login
Copy after login
Copy after login
Array
(
    [1] => 9
    [3] => 1321424
    [4] => 5
)
老大你的正则太高端了,乱摸了半天总算自己摸出来了 
可是下次还是不会 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template