Foros del Web » Programando para Internet » PHP »

Dividir texto en tres columnas

Estas en el tema de Dividir texto en tres columnas en el foro de PHP en Foros del Web. Tengo un texto sin saltos de linea (todo seguido) que quiero dividir en tres textos independientes para meterlo en tres columnas. No quiero que se ...
  #1 (permalink)  
Antiguo 04/10/2006, 10:39
Avatar de indiestudio  
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 20 años, 9 meses
Puntos: 1
Dividir texto en tres columnas

Tengo un texto sin saltos de linea (todo seguido) que quiero dividir en tres textos independientes para meterlo en tres columnas.

No quiero que se me corten las palabras al dividirlo.

Tengo este codigo pero corta las palabras:

Código PHP:
<? 
$cuantos
=strlen($texto);
$corta=$cuantos/3;
$corta1=$corta*2;
$fin=$cuantos-$corta1?>

//en cada celda pongo
<? echo nl2br(substr($texto,0,$corta));?>
<? 
echo nl2br(substr($texto,$corta,$corta)); ?>
<? 
echo nl2br(substr($texto,$corta1,$fin)); ?>
Gracias de antemano
  #2 (permalink)  
Antiguo 04/10/2006, 10:49
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Está bien q quieras dividir el texto en 3 partes iguales tal y como lo expones.

Lo q deberías hacer después de definir el valor de los 2 primeros cortes es buscar el siguiente (o anterior, según tu criterio) espacio, x ejemplo con la función strpos a partir del trozo de texto seleccionado y así haces los cortes a través de un espacio. Espero haberte dado una orientación de lo q sugiero.

X cierto, para la última celda no es necesario q especifiques la variable $fin ya q sin ésta te pillaría hasta el final igualmente.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 04/10/2006, 11:48
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Aquí te muestro otra opción:

Código PHP:
<?php 
$detalle
="Aquí pondrás el texto que quieras y se dividira segun tus criterios, en lo personal se me ocurrio hacerlo así";

$palabras explode " "$detalle );

$contador 0;

echo 
"<table border = \"1\"><tr><td>";

for ( 
$e 0$e count $palabras ); $e++ )
{
   
$columna = (int) (count $palabras ) / 3); // este # 3 es el # de columnas que quieres mostrar

   
if ( $contador $columna )
   {
      echo 
$palabras[$e]." ";
      
$contador += 1;
      continue;
   }
   else
   {
      echo 
"</td><td>".$palabras[$e]." ";
      
$contador 0;
   }
}

echo 
"</td></tr></table>";
?>
Espero sea lo que necesitabas o por lo menos te de una idea para realizar tu proposito. Suerte

Última edición por Erikfrancisco; 04/10/2006 a las 12:11
  #4 (permalink)  
Antiguo 04/10/2006, 12:13
Avatar de indiestudio  
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 20 años, 9 meses
Puntos: 1
Conseguido

Lo que tu me pasas me vale si quiero que las dos primeras columnas sean iguales y la tercera ponga el resto (que me hace falta para otra parte de la web)

Este divide en tres partes iguales:

Código PHP:
<?
$texto
="Un texto largo y sin saltos de linea";
$cuantos=strlen($texto); 
// si tiene saltos de linea sin <br> (meter a piñon un texto en BBDD) 
// usar $cuantos=strlen(urlencode($texto));
$divide=$cuantos/3;

$texto1=substr($texto,0,$divide);
$corta=strrpos($texto1," "); //haya el ultimo espacio
$texto1=substr($texto0$corta);
$texto2=substr($texto,$corta,$divide);
$corta2=strrpos($texto2," ");
$texto2=substr($texto$corta$corta2);
$corta3=$corta+$corta2;
$texto3=substr($texto,$corta3);
?>
Muchas gracias por tu ayuda

Última edición por indiestudio; 09/10/2006 a las 12:04 Razón: revision de codigo
  #5 (permalink)  
Antiguo 04/10/2006, 12:19
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Con respecto a lo de:

Lo que tu me pasas me vale si quiero que las dos primeras columnas sean iguales y la tercera ponga el resto (que me hace falta para otra parte de la web)

No estoy de acuerdo ya que el código que te pase presisamente hace la divición en esta línea:

$columna = (int) (count ( $palabras ) / 3);

Así que debería dividirte las columnas en partes iguales o por lo menos él código intentaría hacerlo.
  #6 (permalink)  
Antiguo 04/10/2006, 12:28
Avatar de indiestudio  
Fecha de Ingreso: julio-2003
Mensajes: 163
Antigüedad: 20 años, 9 meses
Puntos: 1
Volveré a probarlo, pero eso me pareció

Gracias de nuevo
  #7 (permalink)  
Antiguo 04/10/2006, 12:35
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Yo kisiera ser imparcial, aunque puede q no lo sea, pero opino q la solución de la búsqueda del espacio es más exacta pues se basa en los caracteres.

En la división de palabras puede q un párrafo esté lleno de palabras cortas y otro de palabra largas y ya no quede tan igualado.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 00:24.