Xpath 中的撇号是怎么回事?我尝试的任何方法似乎都不起作用。
我正在尝试使用 DOM 中的 Xpath 通过标题从 XML 文件中挑选项目,但因为有些项目有撇号,所以它不起作用。
我试过用这个替换撇号
$query1 = "channel/item[title='$p']/title";
但即使这样也行不通。关于如何做到这一点的任何建议,或如何通过 DOM 中的标题提取元素的替代方法?
编辑
这是我的代码:
$q = $_GET["q"];
$q = explode('|^', $q);
$counts = count($q);
unset($q[$counts-1]);
$p = stripslashes($q);
$q = stripslashes($p);
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->Load("../$userid.xml");
$xpath = new DOMXPath($dom);
foreach ($q as $r) {
$p = preg_replace("/'/","’",$r);
$query1 = "channel/item[title='$p']/title";
$query2 = "channel/item[title='$p']/url";
$query3 = "channel/item[title='$p']";
$entries = $xpath->query($query1);
$entries2 = $xpath->query($query2);
$entries3 = $xpath->query($query3);
foreach ($entries as $entry) {
foreach ($entries2 as $entry2) {
foreach ($entries3 as $entry3) {
$oldchapter = $entry->parentNode->removeChild($entry);
$oldchapter2 = $entry2->parentNode->removeChild($entry2);
$oldchapter3 = $entry3->parentNode->removeChild($entry3);
$dom->preserveWhiteSpace = false;
}
}
}
}
$dom->formatOutput = true;
$dom->save("../$userid.xml")
基本上,我的代码从 URL 中提取标题,用“|^”分隔(例如 title1|^title2|^title3|^)。因为“|^”附加到每个标题的末尾,所以我必须从数组中删除空值。然后,因为带有撇号的标题像“Title\\'s”一样出现,所以我必须两次剥离斜线才能摆脱它们。然后我加载一个新的 DOM 文档,并从现有 XML 文档中的 URL 中找到标题。然后我希望代码删除与 URL 中的标题相同的整个项目(标题、url 和项目本身),然后保存文档。