【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 看看即可。

 

posted @ 2018-05-20 17:18  PHP急先锋  阅读(543)  评论(0编辑  收藏  举报