正文
【PHP采集】php采集、[\s\S]的使用、正则获取 换行字符串或html块
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
1、如图,我想要获取 红框框中的html内容,但是普通的正则一直获取不到:
2、原因剖析:因为html换行了,所以直接 /<h3 class=\"s_name\"(.+?)<span>/ 是获取不到的,必须要进行换行匹配
3、换行之后,退而求其次,干脆把整个 h3里面的内容都拿来
4、代码:
preg_match_all('/<h3 class=\"s_name\">([\s\S]+?)<\/h3>/',$content,$matches); //var_dump($matches);die;
if($matches){
echo "景点名称 = ".$matches[1][0]."<br>";
}
5、我们知道(.+?)这是个很强大的匹配式,嘿嘿,其实 [\s\S]比它还强大,几乎包含了一切。
6、如果想隔两行,取值 那怎么办呢? 别慌,照样使用这个[\s\S],它很强大的。
假设 我们想要获取 上面的 【井下探幽 来一场地下探索之旅】 文字,并且是以 【<div class=\"intro-info=i\"】为开始匹配点,那怎么办
解决代码:
preg_match_all('/<div class=\"intro-info-i\">[\s\S]+?<p>([\s\S]+?)<\/p>/',$content,$matches3);打印 $matches3 看看即可。