Resumir párrafos en PHP

Función muy útil para “resumir” párrafos que no queremos mostrar largos en la página. Añadirá puntos suspensivos y evita cortar texto por la mitad para que no quede ‘&aa’ de ‘á’ y cosas similares.
function recortaTexto($string, $maxlen, $addon = ‘…’)
{
if(strlen(strip_tags($string)) <= $maxlen)
{ // Ha de ser HTML válido
return $string;
}

//Tengo que comprobar que el $maxlen no esté cortando un á o algo similar, así que aumento
// maxlen hasta que el siguiente caracter sea un espacio

while ($string[$maxlen+2]!=’ ‘){

$maxlen+=1;

}

$closing_tags = array();
$string = str_replace(chr(0), ”, $string);
$string = preg_replace(‘/(<\/?[a-z][a-z0-9]*[^<>]*>)/im’, chr(0) . ‘\\1’ . chr(0), $string);
$result = explode(chr(0), $string);
for($i = 0, $n = count($result), $len = 0; $i < $n; $i++)
{
if($i % 2)
{
if(substr($result[$i], -2, 1) == ‘/’)
{
continue;
}
if($result[$i]{1} == ‘/’)
{
unset($closing_tags[array_search($result[$i], $closing_tags)]);
continue;
}
$closing_tags[$i] = ”;
}
else
{
$len += strlen($result[$i]);
if($len >= $maxlen)
{
$len -= strlen($result[$i]);
break;
}
}
}

return implode(”, array_slice($result, 0, $i)) . substr($result[$i], 0, $maxlen – $len) . $addon . implode(array_reverse($closing_tags));
}

Publicado en PHP, Programación web. Etiquetas: . Leave a Comment »

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: