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.