我正在做一些xpath,我无法得到任何结果,
我的代码:
$html = file_get_contents($url);
$doc = new DOMDocument;
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$qq = ('/html/head');
$result_rows = $xpath->query($qq);
var_dump ($result_object);
echo '<br>debug begin<br>';
foreach ($result_rows as $result_object)
{
echo 'for each foreach<br>';
echo $result_object->nodeValue;
}
echo '<br>debug end<br>';
结果:
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
debug begin
debug end
他没有介入foreach循环,因为他的结果是没有“为每个foreach”
结果应该是:
debug begin
<meta charset="UTF-8">
debug end
答案 0 :(得分:0)
尝试回显您要返回的结果对象的nodeValue属性,例如:
foreach ($result_rows as $result_object) {
echo $result_object->nodeValue;
}
好的,在编辑之后,我认为您需要将DomNodeList的每个成员发送到一个数组中,然后循环遍历该数组。 E.g:
$query_result = array(); //Set up an empty array
foreach($result_rows as $result_object){
//take results of xpath query and send to this array
$query_result[] = $result_object-> nodeValue;
}
echo '<br>debug begin<br>';
foreach ($query_result as $r){
echo 'for each foreach<br>';
echo $r;
}
echo '<br>debug end<br>';
答案 1 :(得分:0)
1。删除@
前面的@$doc->loadHTML($html);
2。修复99999错误(根据您的评论)。 (阅读错误信息!告诉我们它们是什么。)
3。只有这样$html
才能真正保存html数据,然后才能将其读入XML / DOM文档。
现在你无法获得HTML。您正在读取XML / DOM文档中的空字符串。而这又是为什么你的XPATH返回空的原因......因为整个HTML都没有。
修改强>
有关您的网站未加载到XML / DOM的更多信息,请将@$doc->loadHTML($html);
更改为:
if (!$doc->loadHTML($html)) {
foreach (libxml_get_errors() as $error) {
print_r($error);
}
libxml_clear_errors();
}
无论如何,它期待HTML。所以如果你已经知道它不是HTML,那就有你的问题了。