Мне необходимо вставить в "тег" надпись, где содержатся двойные кавычки
"
, однако ничего не меняется. Если просто вывести на экран строку и открыть исходный код страницы, то появляются
&qout;
, а в XML-теги не вставляется в таком виде.
$testTag = $testXML->createElement('test-tag', htmlspecialchars($testString, ENT_XML1 | ENT_QUOTES));
Пробовал и без флагов, и заранее определять переменную и туда всё пихать, а потом вызывать её в
createElement
. Но вставляется всё равно с кавычками.
Код:
<?php
$testString = 'проверка "тест"';
$testXML = new DOMDocument('1.0', 'utf-8');
$testXML->formatOutput = true;
$testXML->preserveWhiteSpace = false;
$testTag = $testXML->createElement('test-tag', htmlspecialchars($testString, ENT_XML1 | ENT_QUOTES));
$testXML->appendChild($testTag);
// МНОГО ДРУГИХ ВСТАВОК ТЕГОВ
$testXML->save('test.xml');
В XML должно быть
проверка "тест"
В общем-то помогло двойное использование
htmlspecialchars()
. Исходный код:
<?php
$testString = 'проверка "тест"';
$tshsc = htmlspecialchars($testString, ENT_XML1 | ENT_QUOTES);
$testXML = new DOMDocument('1.0', 'utf-8');
$testXML->formatOutput = true;
$testXML->preserveWhiteSpace = false;
$testTag = $testXML->createElement('test-tag', htmlspecialchars($tshsc, ENT_XML1 | ENT_QUOTES));
$testXML->appendChild($testTag);
// МНОГО ДРУГИХ ВСТАВОК ТЕГОВ
$testXML->save('test.xml');
Я ОШИБСЯ! Это не помогло. PHP преобразовывает & в
&
и всё ломает. Как отключить это преобразование я не нашёл!
То есть в итоге приходит чушь типа
проверка &quot;тест&quot;