0

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 和项目本身),然后保存文档。

4

0 回答 0