php的preg_match_all()匹配不到指定的字符串求解?
本文介绍了php的preg_match_all()匹配不到指定的字符串求解?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
demo:
$html='<div class="p-img"><a href="url"></a></div><div class="p-img"><img src="xx"></div>';
preg_match_all('/<div class="p-img">(.*?)<\/div>/', $html, $out);
var_dump($out);
目标字符串$html,希望匹配<div class="p-img">,发现最后输出的$out是一直是empty,如何才能正确的匹配所有的结果,求正则高手指点
找到答案之后的补充说明:
利用爬虫从网络上获取到的dom结构,里面有很多的空格和换行,如果想把目标html匹配出来,正则表达式后面需要添加模式修正符号
preg_match_all('/<div class="p-img">(.*?)<\/div>/is', $html, $out);
/i 忽略大小写
/s 将字符串视为单行,换行符作为普通字符;
解决方案
$html='<div class="p-img"><a href=\'url\'></div><div class="p-img"><img src=\'xx\'></div>';
preg_match_all('/<div\sclass="p\-img">(.*?)<\/div>/is', $html, $out);
var_dump($out);
输出:
array(2) {
[0]=>
array(2) {
[0]=>
string(39) "<div class="p-img"><a href='url'></div>"
[1]=>
string(39) "<div class="p-img"><img src='xx'></div>"
}
[1]=>
array(2) {
[0]=>
string(14) "<a href='url'>"
[1]=>
string(14) "<img src='xx'>"
}
}
要我怎么说呢,你的 $html 里面的 \/
应该 /
,并且 '
没有转义为 \'
我运行通不过,你知道么,是你语法问题,还是正则的问题?
这篇关于php的preg_match_all()匹配不到指定的字符串求解?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文