我有以下函数可以在 a 中查找值HTML DOM
;
它有效,但是当我给出参数时$value
like: Levi's Baby Overall,
它破裂了,因为它没有逃脱 , 和 ' 字符
如何从 DOM XPath 查询中转义所有无效字符?
private function extract($file,$url,$value) {
$result = array();
$i = 0;
$dom = new DOMDocument();
@$dom->loadHTMLFile($file);
//use DOMXpath to navigate the html with the DOM
$dom_xpath = new DOMXpath($dom);
$elements = $dom_xpath->query("//*[text()[contains(., '" . $value . "')]]");
if (!is_null($elements)) {
foreach ($elements as $element) {
$nodes = $element->childNodes;
foreach ($nodes as $node) {
if (($node->nodeValue != null) && ($node->nodeValue === $value)) {
$xpath = preg_replace("/\/text\(\)/", "", $node->getNodePath());
$result[$i]['url'] = $url;
$result[$i]['value'] = $node->nodeValue;
$result[$i]['xpath'] = $xpath;
$i++;
}
}
}
}
return $result;
}
不应使用用户提供的任意字符串替换 XPath 表达式中的占位符,因为存在(恶意)XPath 注入的风险。
为了安全地处理此类未知字符串,解决方案是使用预编译的 XPath 表达式并将用户提供的字符串作为变量传递给它。这也完全消除了处理代码中嵌套引号的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)