PHP:通过类名获取 DOM 元素
Posted
技术标签:
【中文标题】PHP:通过类名获取 DOM 元素【英文标题】:PHP: Getting DOM elements by classname 【发布时间】:2017-04-03 14:08:02 【问题描述】:我有以下:
<div id="content">
<div class="content-top">bla</div>
<div class="inner text-inner">
bla bla bla
</div>
</div>
和 php:
$page = file_get_contents('http://www.example.com/test');
@$doc = new DOMDocument();
@$doc->loadhtml($page);
$node = $doc->getElementById('content');
如何修改$node = $doc->getElementById('content');
以便我可以定位<div class="inner text-inner">
?
【问题讨论】:
【参考方案1】:您可以使用 XPath 轻松实现。
$page = file_get_contents('http://www.example.com/test');
$doc = new DOMDocument();
$doc->loadHTML($page);
$xpath = new DomXPath($doc);
$nodeList = $xpath->query("//div[@class='inner text-inner']");
$node = $nodeList->item(0);
// To check the result:
echo "<p>" . $node->nodeValue . "</p>";
这将输出:
bla bla bla
【讨论】:
当我尝试保存在文件中时 // 记录条目 $record = $_SERVER['DOCUMENT_ROOT'] 。 '/我的文件夹/' 。 '测试' 。 '.html'; $file = fopen($record,"w"); $txt = $doc->saveHtml($nodeList); fwrite($file,$txt); fclose($文件);它得到警告:DOMDocument::saveHTML() 期望参数 1 是 DOMNode,对象在 .. 中给出,并且 test.html 文件中没有保存任何内容 @Gorna-Bania 这是因为$nodeList
是一个 DOMNodeList 对象。尝试改变这个:$txt = $doc->saveHtml($nodeList->item(0));
以上是关于PHP:通过类名获取 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章
ES6 - 原生js遍历DOM - document.querySelectorAll(‘.xx‘)给DOM元素添加删除类名 - dom.classList.add切换类名toggle
ES6 - 原生js遍历DOM - document.querySelectorAll(‘.xx‘)给DOM元素添加删除类名 - dom.classList.add切换类名toggle