Tengo una tabla MySQL con 120,000 líneas almacenadas en formato UTF-8. Hay un campo, nombre de producto, que contiene texto con muchos acentos. Necesito completar un segundo campo con este mismo nombre después de convertirlo a un formato amigable para las URL (ASCII).iconv da "carácter ilegal" con comillas inteligentes: ¿cómo deshacerse de ellas?
A partir de PHP no maneja directamente UTF-8, que estoy usando:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
para convertir el nombre de la norma ISO-8859-1, seguido de una declaración masiva strstr para reemplazar cualquier carácter acentuado por su equivalente no acentuado (à se convierte en a, por ejemplo).
Sin embargo, los nombres de texto originales se introdujeron con citas inteligentes, y iconv ahoga cada vez que viene a través de uno - me sale:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
para deshacerse de las comillas tipográficas antes de utilizar iconv, he tratado utilizando tres afirmaciones como:
$value = str_replace('’', "'", $value);
(â € ™ es el valor bruto de un inteligente comilla simple UTF-8)
Debido a que el archivo de texto es tan largo, la causa de estos str_replace º e script para el tiempo de espera cada vez.
¿Cuál es la manera más rápida que se deben eliminar las comillas tipográficas (o caracteres no válidos) de una cadena UTF-8, antes de ejecutar iconv?
¿O existe una solución más fácil a todo este problema? ¿Cuál es la forma más rápida de convertir un nombre con muchos acentos, en UTF-8, en un nombre sin acentos, escrito correctamente, en ASCII?
¿Has probado iconv() // capacidad de TRANSLIT fuera? Debe convertir los caracteres acentuados en sus equivalentes ASCII legibles. – ceejayoz
Estoy viendo la documentación, pero no veo cómo ayudará: si iconv() ya se ahoga en una cita inteligente, ¿no se ahogará todavía si uso // TRANSLIT? –
Esto es más para su "declaración masiva strstr" - es por eso que hice un comentario en lugar de una respuesta. – ceejayoz