Foros del Web » Programando para Internet » PHP »

cortar cadena por palabra no letras con limite

Estas en el tema de cortar cadena por palabra no letras con limite en el foro de PHP en Foros del Web. hola miren lo que quiero hacer es imprimir, sobre una tabla , datos de una base de datos, pero el "campo" donde se imprimira el ...
  #1 (permalink)  
Antiguo 14/05/2013, 21:59
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
cortar cadena por palabra no letras con limite

hola miren lo que quiero hacer es imprimir, sobre una tabla , datos de una base de datos,
pero el "campo" donde se imprimira el dato, tendra un limite de caracteres...

supongamos 25 caracteres.

si imprimo..

"esto es una oracion extensa"

cuando sean 25 caracteres va a cortar la frase asi


"esto es una oracion exten"

lo que yo quiero hacer es que me lo corte con un maximo de 25, si quedo entre medio de una palabra, que me lo tome hasta la palabra, asi

"esto es una oracion"

se puede hacer no? , si el caracter 25, es distinto a vacio, retroceda a uno, si el anterior es distinto a vacio, vuelve un caracter atras, y asi a que haya un espacio vacio y ahi corta la cadena,


el ejemplo quedaria asi masomenos.....
la entrada es

"esto es una oracion extensa"

y la salida es

"esto es una oracion"


-------
no hay una clase php que haga esto... ??igual se puede hacer , no ?
.
  #2 (permalink)  
Antiguo 14/05/2013, 22:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: cortar cadena por palabra no letras con limite

http://php.net/wordwrap
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 15/05/2013, 18:36
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: cortar cadena por palabra no letras con limite

Cita:
Iniciado por Triby Ver Mensaje
era lo que buscaba!
  #4 (permalink)  
Antiguo 15/05/2013, 18:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: cortar cadena por palabra no letras con limite

Cita:
Iniciado por aldo_rengo Ver Mensaje
era lo que buscaba!
Pues buscabas en el lugar incorrecto.

Deberías leer el manual de vez en cuando, te sorprendería saber cuantas funciones existen para muchas cosas, igual y así dejas de abrir temas para "buscar" algo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/05/2013, 23:45
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: cortar cadena por palabra no letras con limite

en realidad no se, bien como funciona wordwrap,,
asi que igual hice la funcion, tal vez no me entendieron.....


los textos que le paso como primer parametro son de una base de datos,

no se por que, no me anda cuando lo aplico en resultado de una bbdd...

pero en el ejemplo si


Código PHP:
<?php


function corta_palabra($texto,$lim)
{
$corta=0;
$a str_split($texto);
do {
if(
$a[$lim]==" "){  
$corta=1;}
else{
$corta=0;
$lim--;
}
}while(
$corta==0);
$cortado=substr($texto,0$lim);
return 
$cortado;
}

$p="luneslunes holacomoandaslaholaaa";
echo 
corta_palabra($p,19);



?>
mi idea es esta.... cuando dije campo, no me refiero a una tabla, se que wordwrap, hace que se respete el tamaño de <td>< /td>

solo quiero imprimir con un maximo de 19 caracteres, si justo caigo en entre medio de una palabra, me muevo hacia atras, hasta encontrar un espacio libre, esta funcion recorta cadenas pero corta por palabras,,,,
no entendi el wordwrap, asi que hice la funcion de arriba que andaba pero cuando le puse que trabaje con resultados de una bbdd, no andaba, ustedes le ven un error??

?????????
  #6 (permalink)  
Antiguo 16/05/2013, 03:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: cortar cadena por palabra no letras con limite

Esto hace lo que quieres:

Código PHP:
Ver original
  1. function corta($p, $lim) {
  2.     $ret = explode("\n", wordwrap($p, $lim));
  3.     return $ret[0];
  4. }
  5.  
  6. $p="luneslunes holacomoandaslaholaaa";
  7. echo corta($p,19);

Explicación:

1- wordwrap() devuelve una cadena agregando saltos de línea en el límite de caracteres establecido, o en el primer espacio previo.
2- Explode "divide" una cadena según el(los) caracter(es) especificado(s) y los coloca en un array(), en este caso, usamos salto de línea.
3- Tomas el primer elemento del array y listo!
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 16/05/2013, 13:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: cortar cadena por palabra no letras con limite

Si el problema es de presentación entonces debes resolver el problema usan las herramientas correctas para ello, es decir, hojas de estilo.

Evitar que un texto determinado supere cierto ancho es verdaderamente sencillo con CSS únicamente, no veo la necesidad de pre-procesar estos texto únicamente para que "se vea bien" la pagina.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/05/2013, 14:04
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: cortar cadena por palabra no letras con limite

Cita:
Iniciado por pateketrueke Ver Mensaje
Si el problema es de presentación entonces debes resolver el problema usan las herramientas correctas para ello, es decir, hojas de estilo.

Evitar que un texto determinado supere cierto ancho es verdaderamente sencillo con CSS únicamente, no veo la necesidad de pre-procesar estos texto únicamente para que "se vea bien" la pagina.
SI PERO css, verifica,? que respete una cantidad de texto,? no que corte por letras...
puede ser...
lo veo... despues

Etiquetas: cadena, cortar, letras, limite, palabra, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.