Foros del Web » Programando para Internet » PHP »

Como ordenar la informacion de un txt?

Estas en el tema de Como ordenar la informacion de un txt? en el foro de PHP en Foros del Web. Bueno pues eso estoy intentando ordenar la informacion de un archivo txt y estoy bstante estancado... a ver si alguien me puede ayudar ya e ...
  #1 (permalink)  
Antiguo 12/03/2010, 10:25
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Como ordenar la informacion de un txt?

Bueno pues eso estoy intentando ordenar la informacion de un archivo txt y estoy bstante estancado... a ver si alguien me puede ayudar ya e posteado y agradeceria ayuda porfavor..

Mi codigo es el siguiente..

Código PHP:
<?php 

$pais 
= array("Argentina","Australia","Bolivia","Brasil","Canada","Chile","Colombia","Costa Rica","Ecuador","El Salvador","España","Estados Unidos","Guatemala","Honduras","Japon","Mexico","Nicaragua","Panamá","Paraguay","Peru","Puerto Rico","Rep. Dominicana","Uruguay","Venezuela");
$abrir file ("listafiltrada.txt");
$i=0;$i<24;$i++;
$n=0;$n<8932;$n++;
//echo $pais[$i]."<br>";
if (preg_match("/[$pais[$i]]/",$abrir[$n]))

$encontrarpreg_match("/[$pais[$i]]/",$abrir[$n])."<br>";
  echo 
nl2br ($encontrar);
  
//echo nl2br($abrir[$n]);
}
else
 { 
     echo 
"no se encuentra en el archivo"."<br>";

}


?>
De momento lo que intento es que busque los paises y los muestre pero la idea en realidad es que muestre la direccion de cada pais.. yo en el txt tengo 1399 direcciones de esta manera
Ejemplo:

España
Nombre empresa
Dirección
Tel
mail


Estados unidos
Nombre empresa
Direccion
Tel
mail


Australia
Nombre empresa
Direccion
Tel
mail

Por eso la idea de utilizar preg_match para buscar primero el pais..
en realidad la expresion una vez logrado cosa que no lo he conseguido.. de mostrar los paises ordenadamente.. es mediante regexp de 2 rupturas de linea que muestre hasta hay.. era la idea que tenia pero no se si se puede o tengo que hacerlo de otra forma..

viendo algun codigo por la red lo adapte y he llegado a hacer algo asi pero tambien me quedo pillao y no consigo nada.. por favor que alguien me ilumine lo agradeceria..
aqui pongo el siguiente codigo de ejemplo...

Código PHP:
<?php 

$pais 
= array("Argentina","Australia","Bolivia","Brasil","Canada","Chile","Colombia","Costa Rica","Ecuador","El Salvador","España","Estados Unidos","Guatemala","Honduras","Japon","Mexico","Nicaragua","Panamá","Paraguay","Peru","Puerto Rico","Rep. Dominicana","Uruguay","Venezuela");
$n=0;$n<24;$n++;
$palabra $pais
if(!
$fp fopen("listafiltrada.txt","r")) 

echo 
"No pudo abrirse el archivo"

else 

while(!
feof($fp)) 

$leer_linea fgets($fp,10); 

}

if(
$leer_linea ==$pais)

{
    
$verpreg_match("/[$pais[$i]]/",$leer_linea);
    echo 
$ver;
}
else
{
echo 
"Esto no funciona<br>";
echo 
$leer_linea."<br>";
//echo $leer_linea;
}
fclose($fp);
}

Desde ya gracias ;)
  #2 (permalink)  
Antiguo 12/03/2010, 10:29
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

en realidad no entendi mucho lo que quieres lograr... ahora el codigo no ayuda mucho en la compresion ya que en realidad no le veo un funcionamiento a lo que hisiste.. ahora si pones el formato del txt y el resultado que quieres lograr.. seria mas facil ayudarte!

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 12/03/2010, 10:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
en realidad no entendi mucho lo que quieres lograr... ahora el codigo no ayuda mucho en la compresion ya que en realidad no le veo un funcionamiento a lo que hisiste.. ahora si pones el formato del txt y el resultado que quieres lograr.. seria mas facil ayudarte!

saludos!
Es muy simple lo que quiero es que si en el txt tengo esto:

Estados unidos
nombre empresa
Dirección
Tel
mail


Australia
nombre empresa
Dirección
Tel
mail



España
nombre empresa
Dirección
Tel
mail


Andorra
nombre empresa
Dirección
Tel
mail

Quiero que me lo ponga de esta forma

Andorra
nombre empresa
Dirección
Tel
mail


Australia
nombre empresa
Dirección
Tel
mail



España
nombre empresa
Dirección
Tel
mail


Estados unidos
nombre empresa
Dirección
Tel
mail


Entre cada dirección hay 2 rupturas de linea..
Asi se entiende mas ?
  #4 (permalink)  
Antiguo 12/03/2010, 11:43
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

bueno, disculpa la demora es que me toco hora de colacion aca en el trabajo x3
con un poco de logica puedes lograr lo que necesitas.. te hice un ejemplo para que pruebes haber si te sirve

Código PHP:
Ver original
  1. <?php
  2. $texto = <<<EOT
  3. Estados unidos
  4. nombre empresa
  5. Dirección
  6. Tel
  7. mail
  8.  
  9.  
  10. Australia
  11. nombre empresa
  12. Dirección
  13. Tel
  14. mail
  15.  
  16.  
  17. España
  18. nombre empresa
  19. Dirección
  20. Tel
  21. mail
  22.  
  23.  
  24. Andorra
  25. nombre empresa
  26. Dirección
  27. Tel
  28. mail
  29. EOT;
  30.  
  31. $texto = preg_split("/\n{2,}/", $texto);
  32. foreach($texto as $value){
  33.     list($pais) = explode(PHP_EOL, $value);
  34.     $paises[$pais] = $value;
  35. }
  36. ksort($paises);
  37. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  38. ?>

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 12/03/2010, 16:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

perdona que no te haya respondido es que me encuentero mal de las cerbicales..
de tanto pensar jejeej bueno mañana lo miro te lo agradezco..
  #6 (permalink)  
Antiguo 13/03/2010, 05:50
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno, disculpa la demora es que me toco hora de colacion aca en el trabajo x3
con un poco de logica puedes lograr lo que necesitas.. te hice un ejemplo para que pruebes haber si te sirve

Código PHP:
Ver original
  1. <?php
  2. $texto = <<<EOT
  3. Estados unidos
  4. nombre empresa
  5. Dirección
  6. Tel
  7. mail
  8.  
  9.  
  10. Australia
  11. nombre empresa
  12. Dirección
  13. Tel
  14. mail
  15.  
  16.  
  17. España
  18. nombre empresa
  19. Dirección
  20. Tel
  21. mail
  22.  
  23.  
  24. Andorra
  25. nombre empresa
  26. Dirección
  27. Tel
  28. mail
  29. EOT;
  30.  
  31. $texto = preg_split("/\n{2,}/", $texto);
  32. foreach($texto as $value){
  33.     list($pais) = explode(PHP_EOL, $value);
  34.     $paises[$pais] = $value;
  35. }
  36. ksort($paises);
  37. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  38. ?>

saludos!

Hola muy buenas estoy estudiandome tu codigo.. la verdad que hay funciones que no conozco por ejemplo PHP_EOL no se que hace..
Si pudieras explicarme que es lo que intenta hacer con comentarios te lo agradeceria ya que soy un poco novato por ejemplo el <<<eot no se porque pones tres <<<

de todas formas este codigo no lo ordena.. y vi la variable $pais y la añadi con los paises pero igualmente tampoco me lo hizo..
tengo que añadir en preg_split por ejemplo esto

Código PHP:
preg_slit("/$pais\n{2,}/"$texto); 
??? no se te pregunto...

deduzco que {2,} hace que busque dos rupturas de linea
y el preg_split para dividir.. o alo mejor lo que querias es dividir mediante separadores para asi luego identificar con preg_match el pais no? la verdad que me hago un poco de lio pero gracias por la ayuda..
  #7 (permalink)  
Antiguo 13/03/2010, 06:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Hola espero tu respuesta la verdad que me vuelvo loco con tu codigo..
Lo unico que veo que al parecer haces es dividir y le dices que la primera linea es el pais (no estoy seguro)
Bueno pues he estado analizando y ni puñetera idea de como visualizarlo ordenadamente.. de hecho si en donde haces un echo no se tampoco porque pones 3 PHP_EOL identifico esos 3 algo relacionado con <<< tal vez.. pero igualmente he probado esto >
Cita:
echo nl2br(implode( $paises));
incluso esto >
Cita:
echo $value
;Y me aparece exactamente lo mismo..
en fin.. espero que cuando me respondas aprenda cada cosa de lo que me has puesto.. me hare apuntes y te lo super agradezco.. desde ya...
  #8 (permalink)  
Antiguo 13/03/2010, 08:53
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

ajajaja el codigo en si, si funciona puedes comprobarlo poniendolo solo dentro de una hoja de php y veras que si saldran ordenados como querias... ahora
$texto = <<<EOT <-- eso viene de heredoc, es para no usar comillas solamente no le prestes mucha importancia en el codigo, y PHP_EOL es una constante predefinida dentro de php que indica un salto de linea, es para evitar problemas entre versiones win y linux

saludos! cualquier otra duda me avisas
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 13/03/2010, 10:23
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
ajajaja el codigo en si, si funciona puedes comprobarlo poniendolo solo dentro de una hoja de php y veras que si saldran ordenados como querias... ahora
$texto = <<<EOT <-- eso viene de heredoc, es para no usar comillas solamente no le prestes mucha importancia en el codigo, y PHP_EOL es una constante predefinida dentro de php que indica un salto de linea, es para evitar problemas entre versiones win y linux

saludos! cualquier otra duda me avisas
Te refieres a ejecutarlo en un servidor es lo que he hecho y me aparece la lista tal cual..
por eso me he quedao un poco asi...

sobre las funciones que no conozc las estoy estudiando... pero no puedo estudiar mucho porque tengo una tendiritis del flipe.. osea que no debo de estar mucho fijamente al ordena pq rabio...
gracias por la ayuda.. y a ver que ocurre o que hago mal ni idea..
  #10 (permalink)  
Antiguo 13/03/2010, 10:24
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

claro la lista te sale tal cual pero ordenada alfabeticamente por pais!
__________________
More about me...
~ @rhyudek1
~ Github
  #11 (permalink)  
Antiguo 13/03/2010, 10:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
claro la lista te sale tal cual pero ordenada alfabeticamente por pais!
No no me sale ordenado me sale = por eso te digo.. estoy probando pero no hay manera...

Sinceramente no se que hace tu codigo...

por lo que veo identificas los dos saltos de linea.. pero para buscar el pais ni idea ya que la varibale pais no le asignas nada pense que la buscabas o algo pero diria que no por favor esplicame un poco mas.. ya que no lo hace y estoy mas perdido que yo que se..

PD: segun leo ksort seria lo que hace que ordena pero no termino muy bien de saber como ademas los ejemplos que estoy viendo los hace definiendo con array y tu creas el array eso de $paises[$pais] no lo entiendo si me lo puedes explicar y por favor revisa el codigo porque no me lo ordena gracias por tu ayuda..
  #12 (permalink)  
Antiguo 13/03/2010, 11:45
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

bueno lo explicare un poco para que quede claro

Código PHP:
Ver original
  1. $texto = preg_split("/\n{2,}/", $texto);
  2. // separo en un array cada informacion completa del pais, (todos los datos, telefono. etc.)
  3. foreach($texto as $value){ // recorro el array creado
  4.     list($pais) = explode(PHP_EOL, $value);
  5.     // asigno a la variable $pais el valor de la primera linea del array (nombre del pais)
  6.     $paises[$pais] = $value;
  7.     // creo un array asociativo con el nombre del pais que contenga toda la informacion pertinente
  8. }
  9. ksort($paises); // ordeno el nuevo array asociativo alfabeticamente por pais
  10. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  11. // junto el array con 3 saltos de linea para que mantenga el formato que le habias dado.


si sigues con dudas avisa

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #13 (permalink)  
Antiguo 13/03/2010, 11:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno lo explicare un poco para que quede claro

Código PHP:
Ver original
  1. $texto = preg_split("/\n{2,}/", $texto);
  2. // separo en un array cada informacion completa del pais, (todos los datos, telefono. etc.)
  3. foreach($texto as $value){ // recorro el array creado
  4.     list($pais) = explode(PHP_EOL, $value);
  5.     // asigno a la variable $pais el valor de la primera linea del array (nombre del pais)
  6.     $paises[$pais] = $value;
  7.     // creo un array asociativo con el nombre del pais que contenga toda la informacion pertinente
  8. }
  9. ksort($paises); // ordeno el nuevo array asociativo alfabeticamente por pais
  10. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  11. // junto el array con 3 saltos de linea para que mantenga el formato que le habias dado.


si sigues con dudas avisa

saludos!
Mas o menos eso es lo que entendia dl codigo pero es que no me lo ordena creo que el problema reside en ksort algo falla ya uqe no lo ordena o ni idea pero te aseguro que lo ejecuto tal cual tu me lo pones y no ordena de todas formas en mi txt no se cuantos saltos de linea hay lo que quiero decir es que pueden haber 3 como 4 o 2 pero lo que si es seguro que minimo hay dos.

De todas formas para empezar a hacer algo necesito la base.. y si este codigo ni siquiera ordena pues no se.. supongo que algo pasa con el ksort he probao modificarlo pero ni idea por lo que veo metes un array dentro de otro y manejas como quieres pero me pierdo un poco aunque entiendo los comentarios y tal pero al no ordenar no se.. en fin seguire indagando y a ver que es lo que falla..
gracias desde ya..
  #14 (permalink)  
Antiguo 13/03/2010, 12:25
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Como ordenar la informacion de un txt?

bueno quiza tengas un problema con el formato en el que le entregas los datos ... por que yo acabo de probarlo y los resultados son los esperado..

EDITO: probe en windows y al parecer fue un problema con los saltos de linea deja asi el codigo para que te funcione

Código PHP:
Ver original
  1. <?php
  2. $texto = <<<EOT
  3. Estados unidos
  4. nombre empresa
  5. Dirección
  6. Tel
  7. mail
  8.  
  9.  
  10. Australia
  11. nombre empresa
  12. Dirección
  13. Tel
  14. mail
  15.  
  16.  
  17. España
  18. nombre empresa
  19. Dirección
  20. Tel
  21. mail
  22.  
  23.  
  24. Andorra
  25. nombre empresa
  26. Dirección
  27. Tel
  28. mail
  29. EOT;
  30.  
  31. $texto = preg_split("/([\r\n]{3,})/", $texto);
  32. foreach($texto as $value){
  33.     list($pais) = explode(PHP_EOL, $value);
  34.     $paises[$pais] = $value;
  35. }
  36. ksort($paises);
  37. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  38. ?>

debi haberlo probado en windows para tener la certeza de que funcionaba..

saludos espero ahora si no tengas problemas

__________________
More about me...
~ @rhyudek1
~ Github
  #15 (permalink)  
Antiguo 13/03/2010, 12:50
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno quiza tengas un problema con el formato en el que le entregas los datos ... por que yo acabo de probarlo y los resultados son los esperado..

EDITO: probe en windows y al parecer fue un problema con los saltos de linea deja asi el codigo para que te funcione

Código PHP:
Ver original
  1. <?php
  2. $texto = <<<EOT
  3. Estados unidos
  4. nombre empresa
  5. Dirección
  6. Tel
  7. mail
  8.  
  9.  
  10. Australia
  11. nombre empresa
  12. Dirección
  13. Tel
  14. mail
  15.  
  16.  
  17. España
  18. nombre empresa
  19. Dirección
  20. Tel
  21. mail
  22.  
  23.  
  24. Andorra
  25. nombre empresa
  26. Dirección
  27. Tel
  28. mail
  29. EOT;
  30.  
  31. $texto = preg_split("/([\r\n]{3,})/", $texto);
  32. foreach($texto as $value){
  33.     list($pais) = explode(PHP_EOL, $value);
  34.     $paises[$pais] = $value;
  35. }
  36. ksort($paises);
  37. echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);
  38. ?>

debi haberlo probado en windows para tener la certeza de que funcionaba..

saludos espero ahora si no tengas problemas

Nada sigue igual me da este resultado
[PHP]Estados unidos nombre empresa Dirección Tel mail Australia nombre empresa Dirección Tel mail España nombre empresa Dirección Tel mail Andorra nombre empresa Dirección Tel mail/PHP]

yo en [PHP]echo implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises);/PHP]

lo cambio por [PHP]echo nl2br( implode(PHP_EOL.PHP_EOL.PHP_EOL, $paises));/PHP] para verlo en mas de una linea pero de una forma o de otra sigue sin ordenarlo no me preguntes porque ni idea.. lo extraño es que en la expression regular he probado esto
Código PHP:
preg_split("/([\n\n]{3,})/" o preg_split("/\n\n{3,})/ 
" y alguna que otra conbinacion y me da exactamente el mismo resultado no varia nada no entiendo que ocurre..
Segun he leeido el PHP_EOL significa un salto de linea es decir significa una linea y por lo que veo que haces es que en cada linea identifique el pais..
Pero si no me equiboco puede ser que hay este el error no? ya que cada linea no es un pais... sino cada cierto numero de lineas..
No tengo mucha idea pero por eso queria utilizar el preg_match para buscar el fragmento lo que no sabia ni se como hacer es filtrarlo por paises cosa que a ti te sale como si nada.. por cierto no influira el windows 7? porque estoy con el windows 7... por si acaso.. o el navegador chrome ?saludos..y gracias..


PD:he probado con el firefox y me da el mismo resultado.. en fin raro es..
Voy a salir pero leere en cuanto vuelva mas tarde muchas gracias por tu ayuda.. por lo que veo utilizas linux y alguna diferencia debe de haber ademas utilizo windows 7 y fijo que algo tendra que ver muchas gracias ;)
  #16 (permalink)  
Antiguo 15/03/2010, 04:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Como ordenar la informacion de un txt?

Creo que he encontrado el fallo lo que no entiendo es si en linux te va porque no funciona en windows..
Diria que el fallo esta aqui>explode(PHP_EOL, $value);
en php_EOL
esto lo que hace es coger la primera linea pero no te busca..
es mas si coges todo el texto y el principio que es estados unidos le pones un espacio en el array te imprimira Vacio si lo subes te imprime Estados unidos pero solo el primero..
Tal vez abria que meterlo en un loop y a lo mejor funciona pero no estoy seguro..
Saludos y sigo indagando muchas gracias..

Etiquetas: informacion, txt
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 01:00.