初学者PHP XPath文本显示


Beginner PHP XPath Text Display

目标:使用xpath检查器/Firefox和PHP在网页上显示选择性文本。

为了在该页上显示名称(文本),需要什么PHP XPATH代码?http://steamcommunity.com/profiles/76561197967713768

使用此代码:

<?php
$html = new DOMDocument();
@$html->loadHtmlFile('http://steamcommunity.com/profiles/76561197967713768');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//div[@class='persona_name']" );
foreach ($nodelist as $n){
echo $n->nodeValue."'n";
}
?>

我得到了"mopar410"的输出,这个用户也扮演了:我只想让它显示"mopar410"。我想删除"此用户还玩过:"部分。

有些信息不能通过xml访问,当我用Firefox中的xpath检查器替换上面的内容时(示例):

<?php
$html = new DOMDocument();
@$html->loadHtmlFile('http://steamcommunity.com/profiles/76561197967713768');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "/x:html/x:body/x:div[3]/x:div[1]/x:div/x:div/x:div/x:div[3]/x:div[1]']" );
foreach ($nodelist as $n){
echo $n->nodeValue."'n";
}
?>

它不工作,我得到一个错误。右击并查看XPATH,然后将XPATH传输到PHP代码的正确方法是什么?

Warning: DOMXPath::query(): Undefined namespace prefix in blahblahblah on line 85
Warning: DOMXPath::query(): Invalid expression in blahblahblah on line 85
Warning: Invalid argument supplied for foreach() in blahblahblah on line 86

我是新手。请帮助。

这是因为<div class="persona_name">除了需要的文本之外还包含其他节点和文本。您可以尝试使用XPath表达式来获取<div class="persona_name">的直接子节点的非空文本节点:

//div[@class='persona_name']/text()[normalize-space(.)]