php xpath解析脚本src

时间:2011-04-28 03:40:22

标签: php parsing xpath

我正在尝试解析所有脚本src链接值,但我得到一个空数组。

$dom = new DOMDocument();
$file = @$dom->loadHTML($remote);

$xpath = new DOMXpath($dom);

$link = $xpath->query('//script[contains(@src, "pcode")]');

$return = array();
foreach($link as $links) {
  $return[] = $links->nodeValue;
}

2 个答案:

答案 0 :(得分:2)

您的XPATH查询看起来有效,应该抓取包含<script>的属性src的每个pcode

如果它返回一个空数组,则需要检查一些事项:

确保DOM文档和加载,并且在将其加载到XPATH时没有错误。被抑制的DOM->负载可能会发出错误或警告。如果您在其他地方查询并且它可以正常工作,那么请忽略它。

确保文档中的代码是大小写匹配的。

尝试

$link = $xpath->query("//script[contains(@src, 'pcode')]");

看起来很傻,只是切换引号,但你永远不知道。

答案 1 :(得分:1)

请务必检查名称空间。如果你的HTML包含这样的声明

<html xmlns="http://www.w3.org/1999/xhtml">

您需要使用文档

注册命名空间
$xp = new domxpath( $xml);
$xp->registerNamespace('html', 'http://www.w3.org/1999/xhtml' );

寻找像这样的元素

$elements = $xp->query( "//html:script", $xml );

命名空间,因为偏执狂会带来信心。