gratis example ejemplos editable php ms-word tinymce user-input

php - example - tinymce no editable



PHP para limpiar la entrada pegada de Microsoft (4)

Tengo un sitio donde los usuarios pueden publicar cosas (como en foros, comentarios, etc.) utilizando una implementación personalizada de TinyMCE. A muchos de ellos les gusta copiar y pegar desde Word, lo que significa que su entrada a menudo viene con una plétora de formatos en línea MS asociados.

No puedo deshacerme de <span whatever> porque TinyMCE depende de la etiqueta span para algunos de sus formatos, y no puedo (y no quiero) obligar a dichos usuarios a usar la función "Pegar desde Word" de TinyMCE. (que no parece funcionar tan bien de todos modos).

¿Alguien sabe de una biblioteca / clase / función que se encargaría de esto por mí? Debe ser un problema común, aunque no puedo encontrar nada definitivo. He estado pensando recientemente que una serie de expresiones regulares de fuerza bruta que buscan patrones específicos de MS podría ser el truco, pero no quiero volver a escribir algo que ya esté disponible a menos que deba hacerlo.

Además, la fijación de comillas, guiones en forma de "em", etc. sería buena. Tengo mis propias cosas para hacer esto ahora, pero realmente me gustaría encontrar un filtro de conversión de MS para gobernarlas todas.


HTML Purifier creará un marcado compatible con los estándares y filtrará muchos posibles ataques (como XSS).

Para una limpieza más rápida que no requiere el filtrado XSS, utilizo la extensión PECL Tidy, que es un enlace para la utilidad Tidy HTML .

Si no te ayudan, te sugiero que cambies a FCKEditor, que tiene esta función incorporada .


El sitio web http://word2cleanhtml.com/ hace un buen trabajo al convertir desde Word. Lo estoy usando en PHP descartando, para procesar algo de HTML heredado, y hasta ahora funciona bastante bien (el resultado es un código <p>, <b> muy limpio). Por supuesto, al ser un servicio externo no es bueno usarlo en el procesamiento en línea como su caso.

Si lo intentas y trae muchos 400 errores, primero intenta filtrar el HTML con Tidy .


En mi caso, hubo un patrón. La parte no deseada siempre comenzó con

<!-- [if gte mso 9]>

y terminó por un

<![endif]-->

Entonces mi solución fue cortar todo antes y después de este bloque:

$array = explode("<!-", $string, 2); $begin = $array[0]; $end=substr(strrchr($string,''[endif]-->''),10); echo $begin.$end;


En mi caso, esto funcionó bien:

$text = strip_tags($text, ''<p><a><em><span>'');

En lugar de tratar de sacar cosas que no quieres, como palabras incrustadas xml, puedes especificar que tienes etiquetas permitidas.