Я искал stackoverflow по этой проблеме и нашел несколько тем, но мне кажется, что на самом деле для меня нет однозначного ответа.
У меня есть форма, которую пользователи отправляют, и значение поля сохраняется в файле XML. XML настроен на кодировку UTF-8.
Время от времени пользователь копирует / вставляет текст откуда-то, и вот тогда я получаю «ошибка сущности не определена».
Я понимаю, что XML поддерживает только несколько выбранных объектов, и все, кроме того, что не распознается - отсюда ошибка синтаксического анализатора.
Из того, что я понял, есть несколько вариантов, которые я видел:
- Я могу найти и заменить все
и заменить их на  
или реальным пробелом.
- Я могу разместить соответствующий код в разделе CDATA.
- Я могу включить эти объекты в файл XML.
Что я делаю с XML-файлом, так это то, что пользователь может вводить контент в форму, он сохраняется в XML-файле, а затем этот контент отображается в виде XHTML на веб-странице (анализируется с помощью SimpleXML).
Из трех или любых других вариантов, о которых я не знаю, как лучше всего справиться с этими объектами?
Спасибо,
Райан
UPDATE
Я хочу поблагодарить всех за отличную обратную связь. Я на самом деле определил, что вызвало ошибки моей сущности. Все предложения заставили меня глубже изучить это!
Некоторые текстовые поля, в которых были старые текстовые поля, но мои текстовые области были улучшены с помощью TinyMCE. При ближайшем рассмотрении оказывается, что предупреждения PHP всегда ссылаются на данные из расширенных текстовых областей TinyMCE. Позже я заметил на ПК, что все символы были удалены (потому что он не мог их прочитать), но на MAC вы могли видеть маленькие квадратные квадраты, указывающие номер юникода этого символа. Причина, по которой он появился в квадратах на MAC в первую очередь, заключается в том, что я использовал utf8_encode для кодирования данных, которых не было в UTF, чтобы предотвратить другие ошибки синтаксического анализа (что так или иначе связано с TinyMCE).
Решение всего этого было довольно простым:
Я добавил эту строку entity_encoding : "utf-8"
в мой tinyMCE.init. Теперь все персонажи показывают, как они должны.
Полагаю, единственное, чего я не понимаю, - это почему символы по-прежнему отображаются при размещении в текстовых полях, потому что ничто не преобразует их в UTF, но с TinyMCE это было проблемой.