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

时间:2013-02-13 13:56:16

标签: php parsing xpath 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”获得第二个值,但不能在单独的变量中获得标签。

有什么想法解决这个问题?

P.S:无法更改标签值,因为它们来自HTML页面中的服务器。

1 个答案:

答案 0 :(得分:1)

您可以遍历<li>个孩子,其中第一个是DOMText对象,其中包含(例如)height标签,第二个将是{{ 1}} <span>对象:

DOMElement