Foros del Web » Programando para Internet » PHP »

Poner un espacio cada x caracteres

Estas en el tema de Poner un espacio cada x caracteres en el foro de PHP en Foros del Web. Hola, quiero poner un espacio cada 20 caracteres es una variable que contiene un texto, entonces he hecho un código, pero seguro que es más ...
  #1 (permalink)  
Antiguo 18/05/2008, 05:22
Avatar de JoniJnm  
Fecha de Ingreso: mayo-2007
Ubicación: Madrid
Mensajes: 264
Antigüedad: 16 años, 11 meses
Puntos: 4
Poner un espacio cada x caracteres

Hola, quiero poner un espacio cada 20 caracteres es una variable que contiene un texto, entonces he hecho un código, pero seguro que es más fácil, es este:

Código PHP:
<?php
$text 
"abcdefghijklmnñopqrstuvwxyz"//Pueden probar que funciona
$var2 strlen($text); //cantidad de letras que tiene el texto
$var 0;
$var5 0;
while (
$var $var2) {
//mientras que var sea menor que la cantidad de letras que tiene el texto
//var irá aumentando en el siguiente while
  
while (substr($text,$var,1) != " " && $var $var2) { 
    
$var++; //mientras que no haya un espacio en el texto, súma uno a var
  
}
  
$var3 $var $var3//por si ha pasado por aquí ya, tiene que restar var3
  
if ($var3 20) { //si no hay un espacio en 20 caracteres
    
$var4 $var3 20
    
//divide los caracteres contados entre 20 para saber cuántos espacio hay que poner
    
$var4 explode(".",$var4); //divide el numero entre parte entera y decimal
    
$var4 $var4[0];//coge la parte entera
    
while ($var4 0) { 
    
//mientras que las veces que hay que poner el espacio sea 0 (cada vez que se añade un espacio se resta uno, al final del while)
      
$var5++; //suma uno cada vez que pongas un espacio
      
$var3 $var5 20//multiplica por 20
      
$text substr($text,0,$var3)." ".substr($text,$var3); //ponle el espacio
      
$var4--;
    }        
  }
}    
echo 
"<br>final: ".$text;
?>
Ejemplo

Código PHP:
<?php
$text 
"abcdefghijklmnñopqrstuvwxyz"
$var2 strlen($text); //var2 = 26
$var 0;
$var5 0;
while (
$var $var2) {
  while (
substr($text,$var,1) != " " && $var $var2) { 
    
$var++; 
  } 
//var = 26, cantidad de caracteres sin un espacio
  
$var3 $var $var3//var3 = 26, ya que es la 1º vez que pasa por aquí
  
if ($var3 20) { //como var3 > 20, sigue
    
$var4 $var3 20//var4 = 1.15
    
$var4 explode(".",$var4); //por un lado 1 y por otro 15
    
$var4 $var4[0];//var4 = 1
    
while ($var4 0) { 
      
$var5++; //var5 = 1
      
$var3 $var5 20//var3 = 20
      
$text substr($text,0,$var3)." ".substr($text,$var3); 
      
//text = abcdefghijklmnñopqrs tuvwxyz
      
$var4--; //resta uno para que var sea menor que cero y no haga más este while
    
}        
  }
}    
echo 
"<br>final: ".$text;
?>
Alguna manera simplificada para poner el espacio cada x caracteres?

Saludos!
  #2 (permalink)  
Antiguo 18/05/2008, 06:09
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Poner un espacio cada x caracteres

$nuevo_texto = wordwrap($text, 20, " ");

Un saludo
  #3 (permalink)  
Antiguo 18/05/2008, 12:38
Avatar de JoniJnm  
Fecha de Ingreso: mayo-2007
Ubicación: Madrid
Mensajes: 264
Antigüedad: 16 años, 11 meses
Puntos: 4
Respuesta: Poner un espacio cada x caracteres

Joer... qué cosas se inventan xD

Gracias!
  #4 (permalink)  
Antiguo 19/05/2008, 11:51
 
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
  #5 (permalink)  
Antiguo 20/05/2008, 13:24
Avatar de JoniJnm  
Fecha de Ingreso: mayo-2007
Ubicación: Madrid
Mensajes: 264
Antigüedad: 16 años, 11 meses
Puntos: 4
Respuesta: Poner un espacio cada x caracteres

Qué bueno ese código! :P

Excelente, jejeje, yo es que soy un poco paquete todavía xD

Saludos, y gracias por el código. Me vale porque no me puede cortar palabras que empiecen por http:// es decir, no puedo cortar url's, lo usaré :P
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.
Tema Cerrado




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