网页爬虫 - php中在函数preg_match_all()如何使用正则表达式匹配多重嵌套的html结构?
大家讲道理
大家讲道理 2017-04-10 17:38:20
[PHP讨论组]

举例:

...

我是标题

这是一行文字

这是一个p

这是嵌套的一行文字

...

如上所示,服务器端返回一段很长的dom结构,需求是把

标签下面最大的那个p拿到,然后解析出其中p标签内的数据,使用preg_match_all()或者preg_match(),正则表达式如何才能匹配到最外层的这个p?

PS:因为页面结构太杂,所以才想到先匹配到h1下面的的p,然后再匹配p中的p

PS:再精简一点,如果p的class是特定的,整个dom结构中只有一个myclass,如果匹配出带有这个class的p

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
天蓬老师

可以用simple_html_dom.php:

<?php
$html = <<<'nowdoc'
<h1>我是标题</h1>
<p class='myclass'>
    <p>这是一行文字</p>
    <p>这是一个p</p>
    <p>
        <p>这是嵌套的一行文字</p>
    </p>
</p>
nowdoc;
require 'simple_html_dom.php';
$html = str_get_html($html);
foreach($html->find('p.myclass') as $v) {
    $arr[] = trim($v->find('p', 0)->plaintext);
    $arr[] = trim($v->find('p p', 0)->plaintext);
}
var_export($arr);
//输出
array (
  0 => '这是一行文字',
  1 => '这是嵌套的一行文字',
)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号