我不明白为什么我的xpath查询返回第二个url但不是第一个url的正确href。 HTML代码看起来一样。它包含相同的结构。但不知何故,没有返回href。 (我只是注释掉中的每一个$网址的测试吧)为什么此Xpath查询不能在Facebook应用程序页面的DOM上工作?
$url = "http://apps.facebook.com/TexasHoldEmPoker/"; // this one does not work
//$url = "http://nu.nl"; // this one works
$response = wp_remote_get($url);
$data = $response['body'];
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->strictErrorChecking = false;
$href='';
if (!$dom->loadHTML($data))
{
foreach (libxml_get_errors() as $error)
{
}
libxml_clear_errors();
}
else
{
$xpath = new DOMXPath($dom);
$elements = $xpath->query("/html/head/link[@rel='shortcut icon']");
if (!is_null($elements))
{
foreach ($elements as $element)
{
if ($element->getAttribute('href'))
{
$href = $element->getAttribute('href');
}
}
}
}
echo $href;
所以我知道代码为“nu.nl”工作正确的,但不知何故没有为Facebook应用程序页面。我不知道为什么,因为结构是相同的。
p.s. :完整的代码在这里:http://plugins.svn.wordpress.org/wp-favicons/trunk/plugins/sources/page.php
因为这两个页面都是XHTML,您是否尝试过使用'DOMDocument :: loadXML()'而不是'loadHTML()'? – Phil 2011-03-02 00:53:43
当我尝试loadxml没有2工作。不过,我开始怀疑我需要玩命名空间,但所有尝试失败。 – edelwater 2011-03-02 01:03:38
So $ xmlding = new SimpleXMLElement($ dom-> saveXML());使用相同的查询,而不是两种情况下都不显示任何内容 – edelwater 2011-03-02 01:19:11