繁体   English   中英

如何提取PHP DOMXpath中的混合内容?

[英]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.

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