在php中使用xpath和dom获取值

时间:2012-12-19 11:10:19

标签: php html dom xpath

这是我要解析的部分html:

<center>
<table border="0" cellpadding="0" cellspacing="0"  >
<td>
Some text
<br>
<font color=brown>label0</font>Value0
<br>
<font color=brown>Label1</font>Value1.<br>
Some text
<br>

<font color=brown>Label2</font>Value2<br>
</td>
</table>

</center>

我想获得Value0和Value1。

如果我使用它:

$index=$element->nodeValue;

其中element是.../font的查询,我得到了Label0,1,2。但我想要价值。怎么做?如果有必要,我还可以提供更多代码。

4 个答案:

答案 0 :(得分:2)

尝试一下:

$index=$element->nextSibling->nodeValue;

获取字体节点之后的节点值。

答案 1 :(得分:1)

<center>
<table border="0" cellpadding="0" cellspacing="0"  >
<td>
Some text
<br>
<font color=brown>label0</font><span>Value0</span>
<br>
<font color=brown>Label1</font><span>Value1.</span><br>
Some text
<br>

<font color=brown>Label2</font>Value2<br>
</td>
</table>
</center>

尝试按上面的方式放置span而不是查询span的字体查询... 希望它会有所帮助..

答案 2 :(得分:0)

试试这个:

$str = '<center>
<table border="0" cellpadding="0" cellspacing="0"  >
<td>
Some text
<br>
<font color=brown>label0</font>Value0
<br>
<font color=brown>Label1</font>Value1.<br>
Some text
<br>

<font color=brown>Label2</font>Value2<br>
</td>
</table>
</center>';

$dom = new DOMDocument();
$dom->loadHTML($str);
$dom->preserveWhiteSpace = false;
$dom->validateOnParse = true;

$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//font");
foreach ($nodes as $node) {
    echo trim( $node->nextSibling->nodeValue ) . "\n";
}

希望这有帮助。

答案 3 :(得分:-1)

$dom = new DOMDocument();
$xpath = new DOMXPath($dom);    
$xpath->loadHTML('link/to/html');
$fonts = $xpath->query('font');
foreach ($fonts as $font){
    echo $font->nextSibling->nodeValue;
}

上面的脚本将回显<font>内的所有值。

但请问,你为什么不使用CSS