
Muchas veces cuando estamos realizando nuestras páginas y aplicaciones necesitamos presentar solo una porción del texto ( de un String ), como por ejemplo cuando tenemos un artículo y sólo queremos mostrar un pequeño extracto en alguna parte.
/**
* Return sub string sin etiquetas HTML y puntos suspensivos al final
* @param $string String
* @param $length Largo que queremos el substring
* @return String con ...
*/
public function getSubString($string, $length=NULL)
{
//Si no se especifica la longitud por defecto es 50
if ($length == NULL)
$length = 50;
//Primero eliminamos las etiquetas html y luego cortamos el string
$stringDisplay = substr(strip_tags($string), 0, $length);
//Si el texto es mayor que la longitud se agrega puntos suspensivos
if (strlen(strip_tags($string)) > $length)
$stringDisplay .= ' ...';
return $stringDisplay;
}
Yo suelo colocar el nombre de las variables en mis funciones en inglés, por costumbre y por estandar. Veamos como está compuesta la función:
La función acepta dos parámetors $string que es el texto que queremos acortar y length que es el largo que queremos que nos devuelva el nuevo texto.
Utilizamos la función substr de PHP, esta función acepta los siguientes parámetros:
string substr ( string $string , int $start [, int $length ] )
Un $string que es el texto que queremos acortar y los otros dos parámetros es donde queremos comenzar y donde queremos que finalice. Adicionalmente utilizamos la función strip_tags que elimina las etiquetas HTML del texto, esto nos sirve para dos cosas la primera es para quitar cualquier formato del texto y segundo nos sirve para eliminar cualquier etiqueta que nos pueda ocasionar problemas ya sea al guardar el texto en una base de datos o al utilizarlo como una variable en nuestro código. Si quieres conservar las etiquetas simplemente quita strip_tags y deja solo la variable $string.
Tambien damos un valor por defecto a la longitud (length) en caso de que no se le pase este valor a la función.
Por último simplemente verificamos que si el largo del texto es mayor que el largo al que lo queremos cortar le agregue puntos suspensivos al final.
Forma de uso:
//El string que queremos recortar con etiquetas HTML $texto = "<p>Hay dos cosas infinitas: el Universo y la <strong>estupidez humana</strong>. Y del Universo no estoy seguro.</p>" //La función colocando un largo de 42 caracteres contando los espacios. getSubString($texto, 42)
Obtendremos:
Hay dos cosas infinitas: el Universo y la ...
Es una función bastante sencilla y útil en muchos casos.
Si tienes cualquier duda, sugerencia o quieres simplemente saludar, por favor deja un comentario.