Tengo varias cadenas de HTML para cortar a 100 caracteres (del contenido eliminado, no el original) sin pelar etiquetas y sin romper HTML.Utilizando PHP substr() y strip_tags() manteniendo el formato y sin romper HTML
cadena HTML original (288 caracteres):
$content = "<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the air
<span>everywhere</span>, it's a HTML taggy kind of day.</strong></div>";
ajuste estándar: de recorte hasta 100 caracteres y saltos de HTML, el contenido despojado trata de ~ 40 caracteres:
$content = substr($content, 0, 100)."..."; /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove... */
Stripped HTML: Emite el conteo correcto de caracteres pero obviamente pierde formato:
$content = substr(strip_tags($content)), 0, 100)."..."; /* output:
With a span over here and a nested div over there and a lot of other nested
texts and tags in the ai... */
solución parcial: utilizando HTML Tidy o purificador para cerrar las salidas etiquetas HTML, pero limpia de 100 caracteres HTML no muestran contenido.
$content = substr($content, 0, 100)."...";
$tidy = new tidy; $tidy->parseString($content); $tidy->cleanRepair(); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove</div></div>... */
reto: Para la salida HTML limpio y n caracteres (sin incluir recuento de caracteres de elementos HTML):
$content = cutHTML($content, 100); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the
ai</strong></div>...";
Preguntas similares
Diría increíble, funciona, exactamente como se describe en el desafío ... –
Aún recibo cosas como 'envíenos un correo electrónico al Read More' todo el tiempo. Supongo que algo está mal con mi contenido proveniente de la base de datos pero ¿alguien tiene una idea? ¡Gracias! – TomShreds
¿Qué tal soporte para utf-8? –