Pregunta

Estoy usando un control de cuadro de texto enriquecido para publicar algunos datos en una página. y estoy guardando los datos en mi tabla db con la marca HTML. Ej: Esto es < b > my bold < / b > texto

Estoy mostrando los primeros 50 caracteres de esta columna en otra página. Ahora, cuando estoy guardando, si guardo una oración (con más de 50 caracteres) con la etiqueta en negrita aplicada y en mi otra página cuando recorto esto (por tomar los primeros 50 caracteres), perdería la etiqueta b de cierre (& Lt ; / b >). Así que el negrita se aplica al resto de mis contenidos en esa página.

¿Cómo puedo resolver esto? ¿Cómo puedo verificar qué etiquetas abiertas no están cerradas? ¿Hay alguna manera fácil de hacer esto en PHP? ¿Hay alguna función para eliminar todas mis etiquetas / marcas HTML y darme la oración como texto sin formato?

¿Fue útil?

Solución

http://php.net/strip_tags

la función strip_tags eliminará cualquier etiqueta que pueda tener.

Otros consejos

$textWithoutTags = strip_tags($html);

Generalmente uso HTML :: Truncate para esto. Por supuesto, al ser un módulo Perl, no podrá usarlo directamente en su PHP, pero el código fuente muestra un enfoque de trabajo (que consiste en usar un analizador HTML).

Un enfoque alternativo, podría ser truncar como lo está haciendo en este momento, y luego intentar arreglarlo usando Tidy .

Si desea que las etiquetas HTML permanezcan, pero se cierren correctamente, consulte PHP: Truncar HTML, ignorando las etiquetas . De lo contrario, sigue leyendo:

strip_tags eliminará las etiquetas HTML, pero no las entidades HTML (como &amp;), que aún podrían causar problemas si se trunca.

Para manejar entidades también, se puede usar html_entity_decode para decodificar entidades después de quitar las etiquetas, luego recortar y finalmente vuelva a codificar las entidades con htmlspecialchars :

$text = "1 &lt; 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));

(Tenga en cuenta el uso de ENT_QUOTES para convertir realmente todas entidades).

Resultado:

1 < 2
1 <

Nota al pie: Lo anterior solo funciona para entidades que pueden decodificarse según ISO-8859-1. Si necesita soporte para caracteres internacionales, ya debería estar trabajando con cadenas codificadas UTF-8, y simplemente necesita especificar eso en la llamada a html_entity_decode .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top