Ayuda Code PHP

Iniciado por Nightwalker89, 8 Marzo 2009, 05:28 AM

0 Miembros y 1 Visitante están viendo este tema.

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?

HardieVon

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.

Nightwalker89

como que no tiene razon de ser ? :huh: 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;
}
?>



OzX

#3
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.php

Saludos¡

eLank0

#4
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($cadena1);
$num_palabras str_word_count($cadena0);
$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

OzX

jejeje pues creo que el compañero quiere contar caracteres y no Palabras.
con substr, tienes todo solucionado.

Saludos¡

Nightwalker89

listo ya lo solucione gracias gente

Agente Naranja

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);

Código (php) [Seleccionar]
$short_string = substring( $long_string, 0 , strpos($long_string, ' ', 50) );