Как сделать строки «безопасными для XML»?

Я отвечаю на вызов AJAX, отправляя ему XML-документ через эхо-запрос PHP. Чтобы сформировать этот XML-документ, я просматриваю записи базы данных. Проблема в том, что в базе данных есть записи, в которых есть символы «<». Естественно, браузер выдает ошибку именно в этом месте. Как это можно исправить?

60
задан Scott C Wilson 27 August 2017 в 13:49
поделиться

3 ответа

Либо экранируя эти символы с помощью htmlspecialchars , либо, что более уместно, используя библиотеку для создания документов XML, например DOMDocument или XMLWriter .

Другой альтернативой может быть использование разделов CDATA, но тогда вам придется искать вхождения ]]> .

Также примите во внимание, что вы должны соблюдать кодировку, которую вы определяете для XML-документа (по умолчанию UTF-8).

65
ответ дан 24 November 2019 в 17:35
поделиться

Если это возможно, всегда полезно создавать XML с помощью классов XML, а не манипулировать строками - одним из преимуществ является то, что классы автоматически экранируют символы по мере необходимости.

5
ответ дан 24 November 2019 в 17:35
поделиться

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&lt;6 and 6&gt;5
9
ответ дан 24 November 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: