preg_match_all匹配重复内容的时候怎么打印出所有被重复匹配的内容
程序员文章站
2022-05-15 17:18:26
...
preg_match_all匹配重复内容的时候如何打印出所有被重复匹配的内容
先贴代码:
$str = '{if aa eq bb or cc eq dd or ee eq ff}';
$patten = '/\{(.*?)eq(.*?)(or(.*?))*\}/';
preg_match_all($patten,$str,$patten_all);
var_dump($patten_all);
我看了下patten_all这个参数我希望保存了所有匹配到的or和之后的内容,但事实上只保存了最后一个匹配的内容,即使缓存preg_match来匹配也没法保存,贴下刚这段代码的运行结果:
如果我现在想要patten_all这个参数能保存所有匹配到所有的or xxx并且保存到数组中话,正则应该怎么改或者该用什么函数呢?
------解决思路----------------------
这样可能符合你的要求
先贴代码:
$str = '{if aa eq bb or cc eq dd or ee eq ff}';
$patten = '/\{(.*?)eq(.*?)(or(.*?))*\}/';
preg_match_all($patten,$str,$patten_all);
var_dump($patten_all);
我看了下patten_all这个参数我希望保存了所有匹配到的or和之后的内容,但事实上只保存了最后一个匹配的内容,即使缓存preg_match来匹配也没法保存,贴下刚这段代码的运行结果:
如果我现在想要patten_all这个参数能保存所有匹配到所有的or xxx并且保存到数组中话,正则应该怎么改或者该用什么函数呢?
------解决思路----------------------
这样可能符合你的要求
$str = '{if aa eq bb or cc eq dd or ee eq ff}';
$patten = '/(?:if
------解决思路----------------------
or)\s+((\S+)\s+eq\s+([^ }]+))/';
preg_match_all($patten,$str,$patten_all);
var_dump($patten_all);
array(4) {
[0]=>
array(3) {
[0]=>
string(11) "if aa eq bb"
[1]=>
string(11) "or cc eq dd"
[2]=>
string(11) "or ee eq ff"
}
[1]=>
array(3) {
[0]=>
string(8) "aa eq bb"
[1]=>
string(8) "cc eq dd"
[2]=>
string(8) "ee eq ff"
}
[2]=>
array(3) {
[0]=>
string(2) "aa"
[1]=>
string(2) "cc"
[2]=>
string(2) "ee"
}
[3]=>
array(3) {
[0]=>
string(2) "bb"
[1]=>
string(2) "dd"
[2]=>
string(2) "ff"
}
}
相关文章
相关视频
上一篇: 跳还是不跳?这是个问题
下一篇: 劣质的PHP代码简化_php技巧