PHP XML DOM нежелательные экранирующие символы, я не могу написать & qnot; - PullRequest
0 голосов
/ 03 сентября 2011

У меня проблема с

$xml2 = new DOMDocument;
$xml2->load($FilenamePost."/".$FilenameOfThePost.'.xml');

/* filename.xml */
$xpath2 = new DOMXPath($xml2);
$hrefs2 = $xpath2->evaluate("/page");

$Title = str_replace("-==single-quote==--"," " ",$Title);
$Title = str_replace('-==double-quote==--',' " ',$Title);

$Title = str_replace('"',' " ',$Title);

$Title = "Sssa "";

$href2 = $hrefs2->item(0);
$href2->setAttribute("PostTitle",$Title);

$xml2->save($FilenamePost."/".$FilenameOfThePost.'.xml');

/*
And when i try to write 
" 
in my xml, it keeps showing 
"
*/

ПОЧЕМУ ЭТО ???Я не могу найти логическое объяснение ...

Ответы [ 3 ]

2 голосов
/ 03 сентября 2011

Просто сделайте это:

$Title = str_replace("-==single-quote==--", ' " ',$Title);
$Title = str_replace('-==double-quote==--', ' " ',$Title);

И вы получите свой " в xml.

1 голос
/ 03 сентября 2011

setAttribute () выполняет экранирование по умолчанию, поэтому вам может потребоваться использовать html_entity_decode (), если строка уже экранирована:

$href2->setAttribute("PostTitle", html_entity_decode($Title));
1 голос
/ 03 сентября 2011

Вы должны написать " напрямую, DomDocument позаботится о том, чтобы избежать его.

$Title = "Sssa &";
...
...->setAttribute("PostTitle", $Title);

При сохранении атрибут PostTitle будет правильно экранирован:

<... PostTitle="Sssa &quot;" ...>
...