He buscado Stackoverflow en este problema y encontré algunos temas, pero siento que no hay una respuesta sólida para mí en esto.Error del analizador XML: entidad no definida
Tengo un formulario que los usuarios envían y el valor del campo se almacena en un archivo XML. El XML está configurado para ser codificado con UTF-8.
De vez en cuando, un usuario copiará/pegará texto de alguna parte y es cuando aparece el "error de entidad no definida".
Me doy cuenta de que XML solo admite unas pocas entidades selectas y no se reconoce nada más allá de eso, de ahí el error del analizador.
Por lo que sé, hay algunas opciones que he visto:
- puedo buscar y reemplazar todas
e intercambiarlos con 
o un espacio real. - Puedo colocar el código en cuestión dentro de una sección CDATA.
- Puedo incluir estas entidades dentro del archivo XML.
Lo que estoy haciendo con el archivo XML es que el usuario puede ingresar el contenido en un formulario, se almacena en un archivo XML y ese contenido se muestra como XHTML en una página web (analizado con SimpleXML)
De las tres opciones, o cualquier otra opción que desconozco, ¿cuál es la mejor manera de tratar con estas entidades?
Gracias, Ryan
ACTUALIZACIÓN
Quiero agradecer a todos por la gran respuesta. De hecho, determiné qué causaba los errores de mi entidad. ¡Todas las sugerencias me hicieron analizarlo más profundamente!
Algunos cuadros de texto tienen cuadros de texto antiguos, pero mis áreas de texto se han mejorado con TinyMCE. Resulta que, mientras se mira más de cerca, las advertencias de PHP siempre hacían referencia a los datos de TinyMCE y mejoraban las áreas de texto. Más tarde noté en una PC que todos los personajes se habían eliminado (porque no podía leerlos), pero en un MAC se veían pequeños recuadros que hacen referencia al número Unicode de ese personaje. La razón por la que apareció en cuadrados en un MAC en primer lugar, es porque utilicé utf8_encode para codificar datos que no estaban en UTF para evitar otros errores de análisis (que de alguna manera también están relacionados con TinyMCE).
La solución a todo esto era bastante simple:
que añade esta línea entity_encoding : "utf-8"
en mi tinyMCE.init. Ahora, todos los personajes aparecen de la manera en que se supone que deben hacerlo.
Supongo que lo único que no entiendo es por qué los caracteres aún aparecen cuando se colocan en cuadros de texto, porque nada los convierte a UTF, pero con TinyMCE fue un problema.
Algunas partes importantes de su pregunta son invisibles porque se han analizados como marcado. Rodea esos bits con comillas inversas (''). – LarsH
@LarsH: Hm, no veo nada en la fuente de la pregunta que pueda necesitar esto. – Tomalak
@Tomalak: "1. Puedo buscar y reemplazar todos * ?? * y cambiarlos por * ?? * o un espacio real". Seguro me parece que falta algo allí. – LarsH