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" のように来るので、スラッシュを 2 回削除してそれらを取り除く必要があります。次に、新しい DOMdocument をロードし、既存の XML ドキュメントの URL からタイトルを見つけます。次に、URL のタイトルと同じタイトルを持つアイテム全体 (タイトル、URL、およびアイテム自体) をコードで削除してから、ドキュメントを保存します。