Al utilizar simplexml_load_string para procesar un xml, en determinadas ocasiones, nos encontramos con un error de carácter inválido (invalid xmlChar). ¿Sabes cómo solucionarlo?


Los errores que nos muestra el log son los siguientes:

simplexml_load_string(): Entity: line 166858: parser error : xmlParseCharRef: invalid xmlChar value 0
simplexml_load_string(): Entity: line 166858: parser error : xmlParseCharRef: invalid xmlChar value 14

Esto ocurre porque la versión 1.0 de simplexml_load_string no soporta determinados caracteres del xml que queremos procesar. Podemos solucionarlo con una expresión regular que los reemplace:

$xml = file_get_contents('./mi_fichero.xml');
$xml = preg_replace('/&#x[0-1]?[0-9A-E]/', ' ', $xml);
$xml = simplexml_load_string($xml);

¿Preparado para empezar tu proyecto?

¡Comencemos!