strip_tags str_replace str remove ejemplo php character-encoding xml-parsing runtime-error tidy

str_replace - substr php



El XML generado por PHP muestra un mensaje inválido de valor Char 27 (2)

Una función útil para deshacerse de ese error se sugiere en este sitio web. http://www.phpwact.org/php/i18n/charsets#common_problem_areas_with_utf-8

Cuando coloca cadenas codificadas para utf-8 en un documento XML, debe recordar que no todos los caracteres válidos utf-8 se aceptan en un documento XML http://www.w3.org/TR/REC-xml/#charsets

Por lo tanto, debe eliminar los caracteres no deseados, de lo contrario tendrá un error de análisis XML fatal como el anterior

function utf8_for_xml($string) { return preg_replace (''/[^/x{0009}/x{000a}/x{000d}/x{0020}-/x{D7FF}/x{E000}-/x{FFFD}]+/u'', '' '', $string); }

Espero que alguien ahorre algo de tiempo ...

Estoy generando XML usando la biblioteca de PHP de la siguiente manera:

$dom = new DOMDocument("1.0","utf-8");

Hacer lo anterior da como resultado una página que muestra un mensaje en la parte superior de la salida.

Esta página contiene los siguientes errores: error en la línea 16 en la columna 274505: valor de CHAR inválido PCDATA 27 A continuación se muestra una representación de la página hasta el primer error.

He intentado rectificar utilizando la biblioteca de Tidy ... usé iconv para obtener el carácter chino en UTF-8.


Prashant tiene toda la razón. También puede eliminar caracteres no válidos en Javascript haciendo:

function utf8_for_xml(inputStr) { return inputStr.replace(/[^/x09/x0A/x0D/x20-/xFF/x85/xA0-/uD7FF/uE000-/uFDCF/uFDE0-/uFFFD]/gm, ''''); }