[英]How to extract mixed content in PHP DOMXpath?
我有以下要解析的HTML:
<ul class="man">
<li>
height
<span>3.3"</span>
</li>
<li>
weight
<span>45kg</span>
</li>
<li>
date born
<span>1/12/1979</span>
</li>
</ul>
我正在使用下面的代码来解析上面的HTML:
foreach($xpath->query("//ul[@class='man']/li") as $element)
{
echo $element->nodeValue;
}
但是代码返回了<li></li>
内部的全部内容,分别为高度3.3“和重量45kg,而我需要将高度和标签分别以高度和3.3”作为值,并将重量分别以45kg作为值。
我可以使用“ // ul [@ class ='man'] / ul / span”实现第二个值,但是不能在单独的变量中获取标签。
有解决这个问题的主意吗?
PS:由于它们来自HTML页面中的服务器,因此无法更改标签值。
您可以遍历<li>
的子级,第一个是包含(例如) height
标签的DOMText
对象,第二个是<span>
DOMElement
对象:
$data = array();
foreach ($xpath->query("//ul[@class='man']/li") as $element) {
foreach ($element->childNodes as $child) {
$content = trim($child->nodeValue);
if ($child instanceof DOMText && $content != '') {
$key = $content;
} elseif ($child instanceof DOMElement && $child->tagName == 'span') {
$value = $content;
}
}
if ($key !== null && $value !== null) {
$data[$key] = $value;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.