remove - Conversión de un documento de Word en HTML utilizable en PHP
strip_tags php ejemplo (5)
Esto me ha servido bien en el pasado:
$str = mb_convert_encoding($str, ''HTML-ENTITIES'', ''UTF-8'')
Tengo un conjunto de documentos de Word que quiero publicar usando una herramienta PHP que he escrito. Copio y pego los documentos de Word en un cuadro de texto y luego los guardo en MySQL usando el programa PHP. El problema que tengo surge de todos los caracteres no estándar que tienen los documentos de Word, como las comillas y las elipsis ("..."). Lo que hago en este momento es buscar manualmente y reemplazar este tipo de cosas (y también símbolos extraños como e-acute) con texto sin formato o entidades HTML (& eacute; etc) ¿Hay una función en PHP que puedo llamar que tomará el resultado de un documento de Word y convertir todo lo que debería ser entidades en entidades, y otros símbolos que no se muestran correctamente en Firefox en símbolos que se muestran.
¡Gracias!
Una mejor solución sería asegurarse de que su base de datos esté configurada para admitir caracteres UTF-8. Los caracteres adicionales disponibles en el conjunto extendido deben cubrir todos los caracteres "no estándar" de los que está hablando.
De lo contrario, si realmente debe convertir estos caracteres en entidades HTML, use htmlentities () .
htmlspecialchars () te llevará un largo camino, pero ten cuidado porque los documentos de Word son complicados.
Creo que todas estas respuestas pierden un punto vital. Windows mismo usa un sabor de Windows de latin1, por lo que si pega algunos caracteres especiales (como citas asimétricas) en un formulario en una máquina Windows y se envía a un cuadro de Unix (o cualquier otro que no sea muckrosoft) (sea eso a una base de datos o lo que sea) algunos de los personajes no coinciden con nada que el sistema Unix comprenda, de ahí los personajes confusos y confusos. Lo que esto significa es que incluso si tienes una base de datos UTF-8 y usas htmlentities, algunas cosas desagradables seguirán llegando porque son personajes que el sistema operativo no reconoce, ni siquiera son parte de UTF-8. son inventos exclusivos de Microsoft. Me encantaría saber de una solución ingeniosa: lo que hago es incluir manualmente en la lista negra los códigos de caracteres de los caracteres únicos de Microsoft que he encontrado con una lista (también manual) de caracteres UTF-8, hacer un str_replace para todos estos, y ENTONCES puedes hacer lo que quieras con ellos - iconv, htmlentities, guardar directamente en una base de datos utf8, ya no importa.
Mi comprensión de todo esto es un poco inestable - echa un vistazo a http://www.cs.tut.fi/~jkorpela/www/windows-chars.html para una excelente explicación que he mutilado en forma corta arriba. - Si alguien tiene una mejor solución (¡seguramente hay una por ahí!) De cómo PHPify lo que explica este artículo ... ¡Me encantaría escucharlo!
Aquí hay una solución que preparé para el problema con el juego de caracteres de ventanas no portátil. Esto reemplaza los personajes ofensivos casi latinos con sus entidades HTML equivalentes.
$translation=array(
// reference from http://www.cs.tut.fi/~jkorpela/www/windows-chars.html
"/x82" => "‚",
"/x83" => "ƒ",
"/x84" => "„",
"/x85" => "…",
"/x86" => "†",
"/x87" => "‡",
"/x88" => "ˆ",
"/x89" => "‰",
"/x8a" => "Š",
"/x8b" => "‹",
"/x8c" => "Œ",
"/x91" => "‘",
"/x92" => "’",
"/x93" => "“",
"/x94" => "”",
"/x95" => "•",
"/x96" => "–",
"/x97" => "—",
"/x98" => "˜",
"/x99" => "™",
"/x9a" => "š",
"/x9b" => "›",
"/x9c" => "œ",
"/x9f" => "Ÿ",
);
return str_replace(array_keys($translation),array_values($translation),$input);
It Works For Me TM