mayo 20, 2007

Recortar cadena de texto mediante una function con PHP

Seguramente se ha encontrado con el problema de presentar titulares de noticias en alguna parte de su sitio, pero estos no se ven muy bien o rompen un poco con el diseño del sitio debido a la diferencia de extensión en los títulos.



¿Qué queremos?


Cuando se listen los títulos, el que tenga más caracteres del asignado por nosotros, que muestre el título recortado seguido de (...), y cuando sea menor o igual que muestre el título sin recortar y sin los (...).


Para resolver el problema anterior debemos crear una pequeña function y dentro de esta una condición:


<?php


function cut_cadena($cadena, $charlimit){


if(strlen($cadena) > $charlimit){


$cadena = substr($cadena,'0',$charlimit);
$array = explode(' ',$cadena);
array_pop($array);
$new_cadena = implode(' ',$array);


return $new_cadena.'...';


} else {


return $cadena;


}
}


echo "<ul>";
echo "<li><a href='#' title='".$rs["titulo"]."'>"
.cut_cadena($rs["titulo"], 50)."</a></li>";
echo "</ul>";


?>

El ejemplo lo puse en una lista donde llamo la function (cut_cadena) en la parte que imprimo el título, pero en el title del vínculo le dejé el título completo. También hago un array para que no corte las palabras por la mitad en caso de coincidir en el corte y así mostrará algo más coherente.


En la práctica quedaría algo así:


Cualquier comentario y sugerencia será bien recibido

2 comentarios:

Anónimo dijo...

Gracias me sirvio de mucho,
Christian M.

Anónimo dijo...

Gracias por el código. Me va bien.
Aunque si le pongo un Repetir región (DreamweaverCS3), me da un error. Dice que no puede redeclarar la function.
He provado horas y horas. Y parece que no lo acepta.
Sabrías de alguna manera que lo aceptara? Te has encontrado con esto antes?
Qualquier ayuda me iria bien. Muchas gracias. Y gracias por el blog.