Foros del Web » Programando para Internet » PHP »

Convertir texto plano en un array

Estas en el tema de Convertir texto plano en un array en el foro de PHP en Foros del Web. Hola, tengo un resultado similar a éste: Código PHP: $ciudades  =  Caracas Barcelona Montevideo ;  Intenté convertirlo en un array así: Código PHP: <?php  $ciudades  =  str_replace ...
  #1 (permalink)  
Antiguo 01/06/2008, 14:53
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Convertir texto plano en un array

Hola, tengo un resultado similar a éste:

Código PHP:
$ciudades Caracas Barcelona Montevideo
Intenté convertirlo en un array así:
Código PHP:
<?php 
$ciudades 
str_replace(" ","','"$ciudades);
$ciudades_array = array("'"$ciudades ."'");
Supuestamente debería devolver esto
Código PHP:
$ciudades_array = array('Caracas','Barcelona','Montevideo'); 
Pero cuando lo meto en este bucle
Código PHP:
while (list($nombre$ciudad) = each($ciudades_array)) {
echo 
'
  <div class="capa">'
.$ciudad.'</div>';

?> 
Lo que sale es ésto en el HTML:
Código HTML:
<div class="capa">'Caracas Barcelona Montevideo'</div> 
Cuando lo que esperaba es que saliera así:
Código HTML:
<div class="capa">Caracas</div>
<div class="capa">Barcelona</div>
<div class="capa">Montevideo</div> 
¿Qué estoy haciendo mal? Intenté con datos estáticos y funciona bien. Llegué a creer que el detalle estaba en cómo se presenta el primer resultado, pero igual es texto plano con espacio. En teoría debería reemplazar los espacios por apóstrofes y comas, pero no lo hace. No sé por qué toma las tres palabras como un solo conjunto.
  #2 (permalink)  
Antiguo 01/06/2008, 15:12
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Convertir texto plano en un array

hola

prueba con explode, en vez de str_replace
  #3 (permalink)  
Antiguo 01/06/2008, 17:59
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Convertir texto plano en un array

Hola jaronu, gracias por responder. Hice esto:

Código PHP:
$ciudades explode(" " $ciudades);
foreach (
$ciudades as $ciudad) {
echo 
'
<div class="capa">'
.$ciudad.'</div>';

?> 
Y el resultado es el mismo que el anterior.
  #4 (permalink)  
Antiguo 01/06/2008, 23:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Convertir texto plano en un array

Cita:
$ciudades = Caracas Barcelona Montevideo;
esto, en principio no se debería de hacer... o quitaste las comillas solo para ejemplificar??

bueno si no es asi... cometes un error aquí, claramente una cadena va entre comillas indiferentemente de si son sencillas (apóstrofos) o dobles...

http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/06/2008, 02:22
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Convertir texto plano en un array

prueba a si:

Código PHP:
$ciudades explode(" " $ciudades); 
foreach (
$ciudades as $ciudad) { 
echo 

<div class="capa">'
.$ciudad.'<br>/n</div>'//aqui le das un salto de linea a cada elemento del array

si te sirve esto ultimo, igual al primer codigo que posteaste tambien le valdria.

Un saludo
  #6 (permalink)  
Antiguo 02/06/2008, 11:04
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Convertir texto plano en un array

Cita:
Iniciado por pateketrueke Ver Mensaje
esto, en principio no se debería de hacer... o quitaste las comillas solo para ejemplificar??

bueno si no es asi... cometes un error aquí, claramente una cadena va entre comillas indiferentemente de si son sencillas (apóstrofos) o dobles...

http://www.forosdelweb.com/f18/como-...1/#post2414268
Pues sí es cierto. Escribí mal esa línea . En realidad el valor se devuelve como

Caracas Barcelona Montevideo

Tal cual en texto plano, en lugar de como lo había descrito anteriormente.

Jaronu gracias de nuevo, pero lo que busco es encerrar cada valor en un div. De hecho si aplico lo que me comentas, saldría un solo <br /> al final , ya que el conjunto de ciudades es tomado como un solo bloque.
  #7 (permalink)  
Antiguo 02/06/2008, 12:18
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Convertir texto plano en un array

Jooooo lo logré . La insistencia es algo hermoso hasta para los brutones como yo :

Lo que hice fue meterle un split y luego lo traté como un array normal aplicándole un while:

Código PHP:
<?php 
$ciudades 
split("[\n\r\t ]+"$ciudades);

while (list(
$nombre$ciudad) = each($ciudades)) {
echo 
'<div class="capa-'.$nombre.'">'.$ciudad.'</div>';
}
?>
Aunque la intención no es asignarle capas sino un select desplegable (el resultado irá a parar a la BD), pero ya resuelto este paso, creo que desde aquí voy en góndola . No sabía que esta función split -además de dividir la cadena- la convertía automáticamente en un array. Los "valores" eran sólo textos planos, además de que el manual php dice:

Cita:
split — divide la cadena en elementos de un array según una expresión regular
Yo lo interpreté como que la función sólo trabajaba a partir de expresiones regulares que encontrara en la otra cadena , pero en realidad las expresiones son las que se incluyen en la función.
  #8 (permalink)  
Antiguo 02/06/2008, 12:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Convertir texto plano en un array

Muy buena esa funcion, tampoco sabia de ella, bueno ni de muchas, pero bueno, lo mejor es resolver las dificultades.
Lo que pasa es que creia que la funcion explode separaba en partes la cadena. y las metia en un array

Cita:
<?php
// Ejemplo 1
$pizza = "trozo1 trozo2 trozo3 trozo4 trozo5 trozo6";
$trozos = explode(" ", $pizza);
echo $trozos[0]; // trozo1
echo $trozos[1]; // trozo2
//ejemplo del manual php
Un saludo
  #9 (permalink)  
Antiguo 02/06/2008, 14:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Convertir texto plano en un array

Hola jaronu,

split es la versión de explode que acepta una expresión regular como su primer parámetro.

Saludos.
  #10 (permalink)  
Antiguo 02/06/2008, 15:12
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Convertir texto plano en un array

Gracias GatorV

Creo que lo entendi, explode solo acepta cadenas y split expresiones regulares

o eso es lo que se me quedo, despues de revisar las dos funciones en el manual

Un saludo
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 16:54.