Я отвечаю на вызов AJAX, отправляя ему XML-документ через эхо-запрос PHP. Чтобы сформировать этот XML-документ, я просматриваю записи базы данных. Проблема в том, что в базе данных есть записи, в которых есть символы «<». Естественно, браузер выдает ошибку именно в этом месте. Как это можно исправить?
Либо экранируя эти символы с помощью htmlspecialchars
, либо, что более уместно, используя библиотеку для создания документов XML, например DOMDocument или XMLWriter .
Другой альтернативой может быть использование разделов CDATA, но тогда вам придется искать вхождения ]]>
.
Также примите во внимание, что вы должны соблюдать кодировку, которую вы определяете для XML-документа (по умолчанию UTF-8).
Если это возможно, всегда полезно создавать XML с помощью классов XML, а не манипулировать строками - одним из преимуществ является то, что классы автоматически экранируют символы по мере необходимости.
1) Вы можете обернуть ваш текст как CDATA вот так:
<mytag>
<![CDATA[Your text goes here. Btw: 5<6 and 6>5]]>
</mytag>
см. http://www.w3schools.com/xml/xml_cdata.asp
2) Как уже кто-то сказал: Escape these chars. Например, так:
5<6 and 6>5