Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP xPath找到多个html、头和体_Php_Html_Curl_Xpath - Fatal编程技术网

使用PHP xPath找到多个html、头和体

使用PHP xPath找到多个html、头和体,php,html,curl,xpath,Php,Html,Curl,Xpath,我在PHP中使用CURL、DOMDocument、loadHTML、DOMXPath来获取URL的内容。为了验证数据的有效性,我还对检索到的html、head和body标记的数量进行了检查 对于我输入的大多数URL,我的设置工作正常。但是,对于某些URL,报告中的这些标记数量出乎意料。XPath: $html = $this->runXpath('/html'); $head = $this->runXpath('/html/head'); $body = $this->run

我在PHP中使用CURL、DOMDocument、loadHTML、DOMXPath来获取URL的内容。为了验证数据的有效性,我还对检索到的html、head和body标记的数量进行了检查

对于我输入的大多数URL,我的设置工作正常。但是,对于某些URL,报告中的这些标记数量出乎意料。XPath:

$html = $this->runXpath('/html');
$head = $this->runXpath('/html/head');
$body = $this->runXpath('/html/body');
支票:

if($html->length > 1) {
 echo 'Too many html tags';
}
  • :2x HTML(是的,我看到了iframe,但它是通过Javascript生成的,哪个CURL不应该呈现?而且,xpath声明html应该是#document的子元素-根据$tag->parentNode->nodeName,这两个html元素都是?第二个html标记也不会出现在CURL请求的“查看源代码”和响应库中)
  • :2x HTML?(再次是视频,但在DOM源代码中似乎甚至不是相关的iframe标记)
  • :2x BODY?(再次显示iframe,但没有双重html错误,而是双重BODY错误?)
问题

  • 为什么xpath似乎认为这些标记有多个实例,而我在输出时使用ctrl-f在CURL响应体中找不到它们,或者在“View source”中也找不到它们
  • 如何“查看xpath所看到的”来调试类似的情况
  • 看起来DOMDocument或xpath几乎可以解析javascript,是吗?如果不是,我如何解释上面的示例
  • 我很乐意回答任何其他问题。提前感谢!

    最后一个示例url()在HTML源代码中有3个标记可见。我没有检查其他标记。但是列出的每个url都无法在validator.w3.org上验证。感谢您的回复!这些标记放置在标记中,因此我不知道我使用的xpath如何返回/考虑这些标记?最后一个示例url()在HTML源代码中有3个标记可见。我没有检查其他标记。但是列出的每个URL都无法在validator.w3.org上验证。谢谢你的回复!这些标记放在标记中,因此我不知道我使用的xpath将如何返回/考虑这些标记?