我正在尝试使用xpath比较元素的内容。 示例代码:
div[@ class = "name" and. = "'.$ data.'"]
不幸的是,有时$ data包含& quotes或其他特殊字符。
示例:
My school is a "super"
在这种情况下,我无法比较内容。我该怎么办?
答案 0 :(得分:1)
其他答案(最多可以知道)都会逃避太多的字符(例如,addslashes($string)
也会转义双引号)。
无论如何,PHP仅支持XPath 1.0,它遭受错误的转义功能。从XPath 2.0开始,可以通过加倍来转义用于声明字符串的引号(例如,'foo''bar'
将返回foo'bar
)。在XPath 1.0中,没有办法这样做。
摆脱这种情况的一种方法是使用
忽略输入和搜索值中的单引号$string = str_replace("'", "", $data);
$xpath = "div[@class = 'name' and translate(., \"'\", '') = '$string']";
str_replace
行会从搜索令牌中删除所有单引号,并且XPath中的translate
调用会从字符串中删除所有单引号以进行比较。
答案 1 :(得分:0)
你可以使用htmlentities或html_entity_decod e,它更适合你的方式,我不明白你是否有特殊字符,或者他们在数据中。
检查php文档。
答案 2 :(得分:0)
PHP有一个名为" addSlashes"的函数。解决这个问题。它的用途:
addSlashes(your_php_variable);
答案 3 :(得分:0)
名为addslashes()
的函数会转义引号等特殊字符。
试试这个:
div[@ class = "name" and. = "'.<?php echo addslashes($data) ?>.'"]