PHP DOM 文档 XML
PHP DOMDocument XML
我有一个这样的 php 变量:
<div class="classA">
<a id="someID1"></a>
<div class="class1">
<div class="class2">
<div class="class3">
<div class="class4">
<h4>name, name<small>string</small></h4>
</div>
<div>
<h4>number<small>string</small></h4>
</div>
</div>
</div>
</div>
</div>
<div class="classA">
<a id="someID2"></a>
<div class="class1">
<div class="class2">
<div class="class3">
<div class="class4">
<h4>nameA,nameA<small>stringA</small></h4>
</div>
<div>
<h4>numberA<small>stringB</small></h4>
</div>
</div>
</div>
</div>
</div>
现在我想从 h4 中获取数据,它在 classA 中具有这样的名称,name/number/stringA/stringB 或类似的名称。
如何使用 DOMDocument 完成此操作?
我不知道该怎么做,因为这两个 类 之间的唯一区别是 a 标签。
你需要的是getElementById($id)
:
http://php.net/manual/en/domdocument.getelementbyid.php
$dom = new DomDocument();
$dom->loadHTML($html);
$a = $dom->getElementById('someID2');
如果您想使用 DOM 访问 div,那么您必须为 div 分配不同的 class,您可以这样做:
<div class="class1">
<a id="someID1"></a>
...
</div>
<div class="class2">
<a id="someID2"></a>
...
</div>
那么你可以这样做:
document.getElementsByClassName('class2');
使用DOMXpath
选择具有特殊条件的元素。在您的情况下,基于 child id 属性。
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$nodes = $xpath->query("//div[@class='classA' and a[@id='someID2']]")->item(0)->getElementsByTagName("h4");
检查结果 demo
我有一个这样的 php 变量:
<div class="classA">
<a id="someID1"></a>
<div class="class1">
<div class="class2">
<div class="class3">
<div class="class4">
<h4>name, name<small>string</small></h4>
</div>
<div>
<h4>number<small>string</small></h4>
</div>
</div>
</div>
</div>
</div>
<div class="classA">
<a id="someID2"></a>
<div class="class1">
<div class="class2">
<div class="class3">
<div class="class4">
<h4>nameA,nameA<small>stringA</small></h4>
</div>
<div>
<h4>numberA<small>stringB</small></h4>
</div>
</div>
</div>
</div>
</div>
现在我想从 h4 中获取数据,它在 classA 中具有这样的名称,name/number/stringA/stringB 或类似的名称。 如何使用 DOMDocument 完成此操作?
我不知道该怎么做,因为这两个 类 之间的唯一区别是 a 标签。
你需要的是getElementById($id)
:
http://php.net/manual/en/domdocument.getelementbyid.php
$dom = new DomDocument();
$dom->loadHTML($html);
$a = $dom->getElementById('someID2');
如果您想使用 DOM 访问 div,那么您必须为 div 分配不同的 class,您可以这样做:
<div class="class1">
<a id="someID1"></a>
...
</div>
<div class="class2">
<a id="someID2"></a>
...
</div>
那么你可以这样做:
document.getElementsByClassName('class2');
使用DOMXpath
选择具有特殊条件的元素。在您的情况下,基于 child id 属性。
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$nodes = $xpath->query("//div[@class='classA' and a[@id='someID2']]")->item(0)->getElementsByTagName("h4");
检查结果 demo