使用变量搜索XPath,使用单引号进行搜索

时间:2017-06-23 20:05:45

标签: php xml xpath

这似乎是将XPath与变量一起使用的正确语法:

$color = "green";
$list = $xml->xpath("/A/B/C[@COLOR = '$color']/D");

等等,变量出现在单引号内。但是,我的一些数据包含撇号,导致以下代码不返回任何结果:

$word = "can't";
$list = $xml->xpath("/A/B[@CATEGORY='$word']/C/D");

无论何时变量值为撇号,此查询都不起作用。我通过从数据中删除撇号测试了这一点,它工作正常。有没有解决的办法?我不可能从数据中永久删除所有撇号,并且某些值可能仅在撇号中有所不同。

1 个答案:

答案 0 :(得分:0)

由于您的变量很可能包含双引号,因此请使用单曲来反转双精度:

$word = "can't";
$list = $xml->xpath('/A/B[@CATEGORY="'.$word.'"]/C/D');

如果您还有双引号,那么您需要转义引号/双引号,将'替换为\'并保持原样。我认为您可以使用strpos