You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Simple HTML DOM Parser提取无class属性的p标签问题

解决Simple HTML DOM Parser提取无class属性段落的问题

嘿,我刚好对Simple HTML DOM Parser的选择器用法很熟,这个问题其实不难解决!下面给你两种靠谱的实现方式,你可以根据自己的需求选:

方法一:用CSS伪类直接选择(最简洁)

Simple HTML DOM支持CSS选择器语法,我们可以用p:not([class])这个选择器直接定位所有没有class属性的段落标签。代码示例如下:

// 假设你已经初始化好了Simple HTML DOM对象,比如$html = file_get_html('目标网址');
$noClassParagraphs = [];

// 选择所有无class的p标签
$targetPs = $html->find('p:not([class])');

// 遍历提取内容存入数组
foreach ($targetPs as $p) {
    // 这里用innertext获取段落内的文本(不含标签),如果需要带p标签的内容就用outertext
    $noClassParagraphs[] = trim($p->innertext);
}

这个选择器的逻辑很直观::not([class])会排除所有带有class属性的p元素,不管class的值是什么,只留下完全没有class属性的那些。

方法二:遍历所有p标签手动判断(兼容性更强)

如果你的Simple HTML DOM版本比较旧,对CSS伪类的支持不够完善,可以换一种思路——先获取所有p标签,再逐个检查是否存在class属性:

$noClassParagraphs = [];

// 获取页面上所有的p标签
$allPs = $html->find('p');

foreach ($allPs as $p) {
    // 检查当前p标签是否没有class属性,或者class属性为空字符串
    if (!isset($p->class) || trim($p->class) === '') {
        $noClassParagraphs[] = trim($p->innertext);
    }
}

这种方法虽然多了一步遍历判断,但兼容性更好,不用担心选择器失效的问题。

两种方法都能帮你把无class的段落单独存入数组,你可以根据自己的场景来选~

内容的提问来源于stack exchange,提问作者kores59

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:18:58