Autor
|
Tema: Ayuda Code PHP (Leído 3,831 veces)
|
Nightwalker89
|
<? // Inicializamos las variables $tamano = 50; // tamaño máximo $contador = 0; $texto = 'Este es el texto que se cortará para que no ocupe más de 50 carácteres'; // 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; ?>
como deberia cambiar ese code para que en caso de ser menor a 50 caracteres los muestre como esta el texto originalmente sin cortar?
|
|
|
En línea
|
|
|
|
HardieVon
Desconectado
Mensajes: 181
Programming HardCore
|
oye man me da curiosidad, para que quieres ese codigo?
ya que si lo almacenas pierde el orden y no tendria razón de ser.
|
|
|
En línea
|
|
|
|
Nightwalker89
|
como que no tiene razon de ser ? es para mostrar texto recortado y que la persona tenga que tocar en leer mas... <algo asi apareceria xD igual ya lo solucione dejo el code por si a alguien mas le sirve mirando aqui y obvio que me pueden sugerir una modificacion para que sea mas eficiente ^^
<? $tam = 100; $descripcion = x_descripcion; if strlen < $tam { echo x_descripcion } else { $texto .= ' '.$arrayTexto[$contador]; $contador++; } if($texto == '')$texto = substr($arrayTexto[0], 0, $tamano); echo $texto; } ?>
|
|
|
En línea
|
|
|
|
OzX
Desconectado
Mensajes: 406
[NuKe] Team
|
Perdon si Interprete Mal la Idea XD¡ Pero por lo que entendi. No sale Mejor así? <? $cadena = "Yo me Llamo Oz, y Tengo 2 Perros y 4 Gatos , Soy Chileno y Algun Dia GAnaremos el Mundial"; $Solo_50 = substr($cadena,0,50); ?>
y Si quieres Contar Palabra http://cl2.php.net/manual/es/function.str-word-count.phpSaludos¡
|
|
« Última modificación: 8 Marzo 2009, 08:24 am por OzX »
|
En línea
|
Undersecurity.net
|
|
|
eLank0
eLhAcKeR r00Lz
Desconectado
Mensajes: 1.062
|
Hola, Existe una función en PHP llamada str_word_count que te puede servir para hacer lo que quieres, mira: <?php
function RecortaCadenas($palabras_mostrar, $cadena) { $palabras = str_word_count($cadena, 1); $num_palabras = str_word_count($cadena, 0); $parrafo=""; if($num_palabras > $palabras_mostrar) { for ($i=0; $i<=$palabras_mostrar; $i++) { $parrafo .= $palabras[$i]." "; } return $parrafo; } else { return $cadena; } } ?> El 0 y el 1 de la función citada anteriormente, sirven para modificar el formato de la salida de la función, con el 0 devuelve el numero de palabras, con el 1 una matriz con todas las palabras de la cadena. Existe un tercer tipo de formato (numero 2) que consiste en un vector bidimensional donde el primer valor es la posición de la palabra en la cadena y el segundo la misma palabra. El resto del código supongo que lo entenderás. Salu2
|
|
« Última modificación: 8 Marzo 2009, 14:20 pm por eLank0 »
|
En línea
|
|
|
|
OzX
Desconectado
Mensajes: 406
[NuKe] Team
|
jejeje pues creo que el compañero quiere contar caracteres y no Palabras. con substr, tienes todo solucionado.
Saludos¡
|
|
|
En línea
|
Undersecurity.net
|
|
|
|
Agente Naranja
Desconectado
Mensajes: 535
uguu~
|
Yo lo que hago cuando tengo que cortar texto a una cierta longitud es calcular una longitud menor y cortar por el primer espacio que encuentre a partir de dicha longitud. Ejemplo: La longitud máxima es 60. Entonces tomo los primeros 50 carácteres de la cadena y corto por el primer espacio encontrado a partir de la posición 50. Así suele quedar mejor que cortar a mitad de una palabra, y creo que es más rápido que hacer un array con cada una de las palabras (usando split); $short_string = substring ( $long_string, 0 , strpos($long_string, ' ', 50) );
|
|
|
En línea
|
|
|
|
|
|