У меня проблемы с отображением символа амперсанда внутри документа XML с использованием PHP 5.6 (сейчас я не могу использовать PHP 7.x)
Я пытался использовать str_replace (), preg_replace и некоторые другие функции, найденные здесь:
Невозможно проанализировать амперсанд в строке PHP
и здесь: PHP не имеет функции для XML-безопасного декодирования объектов? У вас нет xml_entity_decode?
Я также заметил, что символ амперсанда был проблемой в PHP 5.2.x (https://bugs.php.net/bug.php?id=39521), хотя я думаю, что это было исправлено.
Вот несколько примеров того, что я пытался сделать:
$string = "SOMETHING & OTHER THINGS";
$string = str_replace('&', '&' $string);
$element = $domDocument->createElement('myElement', $string);
$rootElement->appendChild($element);
Когда я узнал об ошибке, я попытался:
$string = "SOMETHING & OTHER THINGS";
$string = str_replace('&', '&' $string);
$element = $domDocument->createElement('myElement');
$element->appendChild( $domDocument->createTextNode($string) );
$rootElement->appendChild($element);
То, что я ожидал, было:
<myElement>SOMETHING & OTHER THINGS</myElement>
Что я получил:
<myElement>SOMETHING & OTHER THINGS</myElement>
Или иногда:
<myElement/>
РЕДАКТИРОВАТЬ: Может быть, я должен добавить, что мое программное обеспечение должно загрузить файл. Поэтому, когда я открываю XML-файл с помощью Notepad ++, я получаю результат, который я показал выше.
Не могу разобраться, любая помощь приветствуется.
Спасибо.