繁体   English   中英

如何在 HTML 片段中找到文本节点?

[英]How can I find text nodes in an HTML snippet?

我正在尝试使用 PHP DOM 函数解析 HTML 片段。 除了段落、跨度和换行标记之外,我已经删除了所有内容,现在我想检索所有文本及其附带的样式。

所以,我想一个接一个地获取每一段文本,然后对于每一个我可以返回树以获取特定属性的值(我只对某些特定属性感兴趣,例如颜色等.)

我怎样才能做到这一点? 还是我想错了?

假设您在这里有一个 DOMDocument:

$doc = new DOMDocument();
$doc->loadHTMLFile('http://stackoverflow.com/');

您可以使用简单的 Xpath 找到所有文本节点。

$xpath = new DOMXpath($doc);
$textNodes = $xpath->query('//text()');

只需对其进行foreach即可遍历所有文本节点:

foreach ($textNodes as $textNode) {
    echo $textNode->data . "\n";
}

从那以后,您可以使用->parentNode向上 DOM 树。

希望这能给你一个好的开始。

对于那些更熟悉 CSS3 选择器并愿意在他们的项目中包含一个额外的 PHP 类的人,我建议使用Simple PHP DOM parser 解决方案如下所示:

$html = file_get_html('http://www.example.com/');

$ret = $html->find('p, span');    
$store = array();

foreach($ret as $element) {
    $store[] = array($element->tag => array('text' => $element->innertext, 
                                            'color' => $element->color, 
                                            'style' => $element->style));
}
print_r($store);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM