这似乎是将XPath与变量一起使用的正确语法:
$color = "green";
$list = $xml->xpath("/A/B/C[@COLOR = '$color']/D");
等等,变量出现在单引号内。但是,我的一些数据包含撇号,导致以下代码不返回任何结果:
$word = "can't";
$list = $xml->xpath("/A/B[@CATEGORY='$word']/C/D");
无论何时变量值为撇号,此查询都不起作用。我通过从数据中删除撇号测试了这一点,它工作正常。有没有解决的办法?我不可能从数据中永久删除所有撇号,并且某些值可能仅在撇号中有所不同。
答案 0 :(得分:0)
由于您的变量很可能包含双引号,因此请使用单曲来反转双精度:
$word = "can't";
$list = $xml->xpath('/A/B[@CATEGORY="'.$word.'"]/C/D');
如果您还有双引号,那么您需要转义引号/双引号,将'
替换为\'
并保持原样。我认为您可以使用strpos