Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/05/2008, 11:51
javierav
 
Fecha de Ingreso: noviembre-2007
Ubicación: Córdoba
Mensajes: 70
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Poner un espacio cada x caracteres

Hola.

Y aunque no existiese esa función, el código sería algo más simple de lo que has puesto. Entiendo que lo que quieres hacer es que si hay una palabra de más de 20 caracteres, debemos insertar un espacio. Podría ser algo así:

Código PHP:
//frase a analizar
$frase 'me gusta la frase supercalifragilisticoespialidoso';
//máximo de caracteres de una palabra. En este caso 20.
$max_letras 20;
//lo que insertaremos para separar la palabra, en este caso un espacio.
$separador' ';
//calculamos la longitud de la frase
$longitud strlen($frase);
//contador de los caracteres de la palabra
$contador 0;
//cadena resultante
$resultado '';

//recorremos cada letra
for($i=0$i $longitud$i++)
{
  
//si la letra actual es un espacio, reseteamos el contador de letras de la palabra puesto que hemos terminado una palabra. Se puede ampliar esto añadiendo signos de puntuación por si no se escriben espacios entre el punto y final y la siguiente frase.
  
if($frase[$i] == ' ')
  {
    
$contador 0;
  }
  
//si no, seguimos en una palabra e incrementamos el contador.
  
else
  {
    
$contador++;
  }

  
//si el contador llega a 21 es que la palabra tiene mas de 20 caracteres
  
if($contador $max_letras)
  {
    
//insertamos en la cadena resultante el caracter separador y luego el actual
    
$resultado .= $separador $frase[$i];
    
//reseteamos el contador
    
$contador 0;
  }
  
//si no ha llegado al maximo todavia puede tener mas
  
else
  {
    
$resultado .= $frase[$i];
  }

Hace exactamente lo mismo que la función wordwrap. De todas formas debes añadirle un tercer parámetro a lo que comenta jpeeri:

Código PHP:
$nuevo_texto wordwrap($text20' '1); 
Puedes probar que ambas hacen lo mismo usando:
Código PHP:
echo $resultado;
echo 
"<br>" wordwrap($frase20' ',1); 
Previa colocación del código primero.

Saludos.
__________________
http://www.javierav.com