Función php recortar cadena
24 ago 2009 8 comentarios
Función muy recomendable cuando queramos recortar una determinada cadena de texto y añadir los típicos puntos suspensivos… En esta función evitaremos cortar palabras completas, podremos decirle que busque hasta determinada palabra o letra antes de cortar la cadena…
if((mb_strlen($texto) > $longitud)) {
$pos_espacios = mb_strpos($texto, ' ', $longitud) - 1;
if($pos_espacios > 0) {
$caracteres = count_chars(mb_substr($texto, 0, ($pos_espacios + 1)), 1);
if ($caracteres[ord('<')] > $caracteres[ord('>')]) {
$pos_espacios = mb_strpos($texto, ">", $pos_espacios) - 1;
}
$texto = mb_substr($texto, 0, ($pos_espacios + 1)).'...';
}
if(preg_match_all("|(<([\w]+)[^>]*>)|", $texto, $buffer)) {
if(!empty($buffer[1])) {
preg_match_all("|</([a-zA-Z]+)>|", $texto, $buffer2);
if(count($buffer[2]) != count($buffer2[1])) {
$cierrotags = array_diff($buffer[2], $buffer2[1]);
$cierrotags = array_reverse($cierrotags);
foreach($cierrotags as $tag) {
$texto .= '</'.$tag.'>';
}
}
}
}
}
return $texto;
}
// Modo de uso
$texto = 'PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.';
$txt = recortar_texto($texto, 100);
echo $txt;
8 Comentarios
Sandro, el 02/01/2011 a las 03:32:49
ok, buen script
ilen, el 07/02/2011 a las 01:22:39
perooooooooooooo porque tanto drama? solo con la funcion substr() y se acabo
aremesal, el 10/02/2011 a las 10:29:53
ilen, muy sencillo: con substr() te vas a cargar todo lo que haya en el texto, mientras que esta función no corta palabras a la mitad, cuida de que no queden etiquetas HTML abiertas, etc.
Con substr(), la cadena de ejemplo podría quedar así:
‘PHP es un lenguaje de programación interpretado, diseñado origi…’
Y eso queda horrible. Pero es peor aún si la cadena original fuese, por ejemplo: ‘PHP es un lenguaje de programación interpretado‘. Usando substr() la cadena podría quedar:
‘PHP es un lenguaje de programación…’
Eso te dejaría en la web final una etiqueta sin cerrar, haciendo que el resto de la página se visualize de forma totalmente incorrecta.
De ahí viene tanto drama.
aremesal, el 10/02/2011 a las 10:31:26
Repito comentario para que salgan las etiquetas HTML:
ilen, muy sencillo: con substr() te vas a cargar todo lo que haya en el texto, mientras que esta función no corta palabras a la mitad, cuida de que no queden etiquetas HTML abiertas, etc.
Con substr(), la cadena de ejemplo podría quedar así:
‘PHP es un lenguaje de programación interpretado, diseñado origi…’
Y eso queda horrible. Pero es peor aún si la cadena original fuese, por ejemplo: ‘<b>PHP es un lenguaje de programación interpretado</b>‘. Usando substr() la cadena podría quedar:
‘<b>PHP es un lenguaje de programación…’
Eso te dejaría en la web final una etiqueta sin cerrar, haciendo que el resto de la página se visualize de forma totalmente incorrecta.
De ahí viene tanto drama.
Diego, el 01/05/2011 a las 15:36:48
Excelente funcion!!, justo lo que buscaba..
Gracias
Jose, el 18/05/2011 a las 01:25:19
Y para saber el resto de texto que a sobrado? se podria?
El Kuate, el 06/07/2011 a las 02:07:39
Thanks por la funcion, yo habia usado una muy parecida pero no la encontre entre mis ejercicios …=)
Julian Moreno, el 19/10/2011 a las 19:15:49
¡Hey! ¡Muchas gracias me ha servido tu aporte! Que tengas feliz dia.