Recortar cadena de texto con PHP

En esta oportunidad vamos a ver como recortar una cadena de texto en PHP. Es útil cuando necesitamos, por ejemplo, mostrar una introducción previa antes de ver el texto completo, también nos puede servir para realizar el copete de una noticia.
Para tal efecto, necesitaremos enviar a la función dos parámetros, la cadena a recortar y la cantidad de caracteres donde se aplicará el recorte.
Veamos el código:
function cortartexto($texto,$tamano){
// Inicializamos las variables
$contador = 0;
// Cortamos la cadena por los espacios
$arrayTexto = split(' ',$texto);
$texto = '';
// Reconstruimos la cadena
while($tamano >= strlen($texto) + strlen($arrayTexto[$contador])){
$texto .= ' '.$arrayTexto[$contador];
$contador++;
}
echo $texto. "...";
}
El código anterior es muy simple de entender, lo primero que hacemos es poner un contador para controlar donde vamos a recortar con $contador = 0;, lo siguientes es convertir el texto en un array para lo cual nos valemos por los espacios para dividir la cadena y así formar la matriz. Por último implementamos un bucle para ir formando nuevamente la cadena, pero solo hasta la cantidad que decidimos recortar.
De esta manera realizamos una sencilla pero útil función para recortar una cadena larga en la cantidad que necesitemos mostrar.
Espero les sea de utilidad. Si desean aportar o encuentrar una mejor forma de realizarlo, por favor no duden en adjuntar a los comentarios. Nos vemos en un próximo post. Saludos.
También te puede Interesar
¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscribes a mi feed y obtienes artículos como este enviados a tu lector de feeds.
Comentarios
Una pequeña sugerencia: si en el texto hay palabras separadas por signos de puntuación sin espacios, entonces este algoritmo se las “tragará” como palabras únicas. La solución es sencilla, introducir una expresión regular en el primer argumento de split():
$arrayTexto = split(‘[\ \.\,\;\?]‘,$texto);
Se pueden añadir más caracteres, como “¿”, “¡”, etc.
Un saludo, y gracias por el algoritmo!
Una pregunta.
¿Y donde esta el numero del tamaño de la nueva cadena de texto?.
Me refiero a que a la variable $tamano ¿no deberíamos darle un valor?.
Disculpa si estoy metiendo la pata, soy novato y estoy a prendiendo.
Saludos.
Me gusto la solucion, la use pero le agregue algunas cosas.
aca esta el codigo:
function cortartexto($texto,$size=0){
// Control de variables de entrada
// texto vacio o falso
if(!$texto){
return false;
}
// texto es solo espacio
if(strlen(trim($texto))==0){
return false;
}
// valor de size no es un numero
if(!is_numeric($size)){
return false;
}
//sin tamaño asignado o con un valor menor a cero
if($size <= 0){
return false;
}
// Inicializamos las variables
$contador = 0;
$textoCortado = '';
// Cortamos la cadena por los espacios
$arrayTexto = split(' ',$texto);
// Reconstruimos la cadena
while(
// validacion de ciclos segun tamaño del texto a reducir
$contador = strlen($textoCortado) + strlen($arrayTexto[$contador]) + 3
){
$textoCortado .= ‘ ‘.$arrayTexto[$contador];
$contador++;
}
if(!empty($textoCortado)){
return $textoCortado . “…”;
}
return false;
}
Saludos



gracias walter!!!
bsossssssss