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

4

0 に答える 0