¿Cómo reemplazar (usar expresiones regulares en PHP5) caracteres no válidos en cadena utf-8 en caracteres de espacios en blanco?PHP: reemplazar caracteres no válidos en cadena utf-8 en
Respuesta
Esto no funcionó para mí. personajes inválidos se quedaron. al igual que no funcionó para bobef. simplemente no hace el trabajo. – Rodniko
Esto funcionó para mí. El archivo fuente fue descargado CSV de los códigos de franquicia de SBA, que formateé manualmente en JSON para ser utilizado en una sembradora Laravel. Pero a pesar de que mi archivo formateado pasó la validación de JSON, todavía había caracteres UTF-8 ocultos y no válidos en el archivo que PHP no pudo decodificar. – Ixalmida
Todavía no me he depurado de los detalles, pero iconv y mb_convert no resuelven el problema con json_encode() Podría ayudar en muchos casos, no en todos. – John
El iconv no funcionaba mi caso (como otras soluciones) así que encontré la mía aquí en la parte de "la validación del carácter":
Con mbstring que pueda do:
$text = mb_convert_encoding($text, 'UTF-8', 'UTF-8');
Funcionará como lo desee (reemplace los caracteres no válidos por espacios en blanco), pero no parece funcionar si desea sustituir caracteres no válidos por otra cosa, como ?
.
Ver: Replacing invalid UTF-8 characters by question marks, mbstring.substitute_character seems ignored
Si ha encontrado el error maldito ‘carácter no válido’, mientras que el uso de XML de PHP o analizador JSON entonces usted podría estar interesado en esto.
Desafortunadamente, los analizadores XML y JSON de PHP no ignoran los caracteres que no son UTF8, sino que se detienen y arrojan un error bastante inútil. Encontré el siguiente código en forma de red y funciona excelentemente para mí ..
//reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ?
$some_string = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'.
'|[\x00-\x7F][\x80-\xBF]+'.
'|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'.
'|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'.
'|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',
'?', $some_string);
//reject overly long 3 byte sequences and UTF-16 surrogates and replace with ?
$some_string = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'.
'|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $some_string);
no resuelve el problema con json_encode. informa que algunos UTF8 válidos tampoco son válidos, lamentablemente sin dar una pista de qué se trata. – John
- 1. Regex para reemplazar caracteres no válidos
- 2. Cómo truncar una cadena UTF8 en PHP?
- 3. Uso de RegEx para reemplazar caracteres no válidos
- 4. C# XmlWriter y UTF8 no válido caracteres
- 5. Verificar la cadena utf8 válida en Python
- 6. XML caracteres no válidos en ruta
- 7. Filtrar caracteres XML no válidos en .NET
- 8. reemplazar caracteres especiales en cadena en java
- 9. Reemplazar caracteres no ASCII de la cadena
- 10. Reemplazar varios caracteres en una cadena
- 11. Reemplazar varios caracteres en una cadena (XSLT)
- 12. C# String.Replace para eliminar caracteres no válidos
- 13. Reemplazar caracteres no numéricos
- 14. Cómo reemplazar caracteres en una cadena java?
- 15. Cómo reemplazar caracteres especiales en una cadena?
- 16. Reemplazar caracteres no ASCII de una cadena Unicode en Python
- 17. cadena reemplazar caracteres de escape
- 18. error sobre los caracteres no válidos XML en Java
- 19. Reemplazar caracteres en NSString
- 20. Reemplazar varios caracteres en una cadena en Objective-C?
- 21. ¿Qué caracteres son válidos en una URL?
- 22. MySQL - Convertir caracteres latin1 en una mesa de UTF8 en UTF8
- 23. de caracteres UTF8 decodificación en C Objetivo
- 24. cómo puedo detectar caracteres hebreo tanto iso8859-8 como utf8 en una cadena usando php
- 25. Convierte caracteres utf8 a iso-88591 y vuelve a PHP
- 26. Reemplazar caracteres si no coincide
- 27. La solicitud AJAX tiene caracteres no válidos
- 28. caracteres que coincida con UTF con preg_match en PHP: (* UTF8) Funciona en Windows, pero no Linux
- 29. Unicode Regex; caracteres no válidos XML
- 30. (鉑) funciones de cadena y UTF8 en php
¿Qué desea hacer? deshacerse del espacio en blanco? o caracteres utf-8? Da un ejemplo. –
deshacerse de los caracteres UTF-8 es fácil: '$ text = '';' :-) – Joey