Foros del Web » Programando para Internet » PHP »

Filtrar contenido de un txt

Estas en el tema de Filtrar contenido de un txt en el foro de PHP en Foros del Web. Hola muy buenas a todos hace una semana pregunte sobre como ordenar el contenido de un txt pero los pocos que pudiero responderme no me ...
  #1 (permalink)  
Antiguo 18/03/2010, 07:34
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Filtrar contenido de un txt

Hola muy buenas a todos hace una semana pregunte sobre como ordenar el contenido de un txt pero los pocos que pudiero responderme no me aclararon todas las dudas y cansado de buscar y buscar informacion lo he hecho a mano de otra forma..
Tengo 1399 direcciones de diferentes paises..

Lo que he hecho manualmente ha sido copiar las direcciones de los paises a diferentes txt por ejemplo Australia.txt

Y ahora tengo que filtrar el telefono mail web etc.. para asi dejar solo la direccion...
Lo mas facil que me seria seria que desde Tel Elimine hasta el Web Site se que el mail se podria hacer un indicador hasta el @ y cogiendo eso como guia borrar pero lo que no se como hacer que borre solo ese campo porque me borra los numeros y las T, E, l.. (todo lo que pongo en la expresion regular..de la direccion... actualmente lo estoy haciendo con preg_replace pero me ocurre esto y lo que no se hace es como indicarle especificamente que busque desde hasta..


A ver si alguien me puede echar un cable..
Lo tengo de esta manera...

Código:
<?php 
//abrimos el archivo en modo solo lectura
$abrir = file_get_contents("Argentina.txt","r"); 
//ponemos una condicion if que si encuentra Tel:..en $abrir ejecute la condicion entre {}
if (preg_match ("/Tel:/", $abrir))
{
//Si lo encuentra ejecuta $filtro filtrando la informacion
 $filtro = preg_replace("/[^Tel][Web Site:$]/","",$abrir);
echo nl2br ($filtro);//visualiza la variable $filtro pero con la funcion nl12br que es para hacer un breack en cada linea

}
else  //sino se cumple 
{

 echo "no se encuentra en el archivo"."<br>";//visualiza esa frase
	
}

?>

Y esto me devuelve esto

Arina
ezArina
rnard Igo654
107Catal ralBsAs.
TelTels(54114331-56304345-59314334-8278
[email protected]

solo he puesto una direccion de ejemplo...


Sobre las direcciones una consulta.. necesito coger solo el fragmento de direcciones despues de filtrarlo y hacer unas tablas y que cada direccion se muestre en esa tabla para asi luego yo poner la medida de las pegatinas..
es para etiquetas .. me aconsejais que lo haga de esta manera..?
De momento solo se me ocurre empezar por hacer las tablas con el dreamwaver y luego tendré que estudiarme un poco el tema.. con alguna expresion regular que divida el txt los 2 saltos de linea ya que cada dirección esta entre un minimo de 2 saltos entonces esos saltos los imprima en cada tabla que haga como de momento no lo se pero cualquier aclaracion lo agradeceria desde ya...
  #2 (permalink)  
Antiguo 18/03/2010, 07:37
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 11 meses
Puntos: 16
Respuesta: Filtrar contenido de un txt

Yo la verdad no sé, pero si lo guardas en un txt, te sacarán los datos muy facilmente... Los datos privados es mejor meterlos en una base de datos, o, como poco, en otro archivo *.php como variables o arrays..

Es más, si lo guardas cada dato como array te será más facil buscar :P, y en una bbdd ni te cuento(pero supongo que no tendrás en tu servidor).
  #3 (permalink)  
Antiguo 18/03/2010, 07:40
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

mira hagamos esto bien, la otra ves intente ayudarte pero nose porque no te funciono, porlomenos a mi si :P

ahora.. para entender 100% pega un fragmento de tu .txt para ver la estructura, y escribe como quieres que se muestre (el resultado luego de todos los filtros, etc...)

haber si ahora te puedo ayudar mas!

saludos
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 18/03/2010, 08:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
mira hagamos esto bien, la otra ves intente ayudarte pero nose porque no te funciono, porlomenos a mi si :P

ahora.. para entender 100% pega un fragmento de tu .txt para ver la estructura, y escribe como quieres que se muestre (el resultado luego de todos los filtros, etc...)

haber si ahora te puedo ayudar mas!

saludos
Hola Hidek muchas gracias por la anterior ayuda y esta..
aqui voy a poner un fragmento de 3 direcciones de australia por ejemplo..


La informacion al final la he ordenador mediante archivos por paises Australia.txt,España.txt,Estados Unidos.txt....


No es para una base de datos bueno si y no... son direcciones para enviar correo postal no es nada de internet...

En fin pongo un fragmento de ejemplo...



Código:
Australia
European Christian Mission
P.O. Box 22
15 Malvern Ave.
CROYDON, N.S.W. 2132
Tel: (02) 7**-5**
Fax: (02) 7**-**0
E-mail: ec***t@i****.com.au


Australia
Libreria Evangelica N.S.W.
5 Bermaud Cress
Warilla, 2528



Australia
Libreria E.V. Hisp Amer.
40 Nottingham Road
Calamvale, 4116
Brisbane




Australia
ELE Trust
PO Box 5010
Brendale, Queensland 4500
Queensland 4500
Tel: Tel: *******
Fax: Fax: (7) ****
E-mail: ****t@o***net.com.au
Web Site: http://www*****st.com
Weno e filtrao x no ser datos mios..


Y Lo quiero dejar asi



Código:
Australia
European Christian Mission
P.O. Box 22
15 Malvern Ave.
CROYDON, N.S.W. 2132



Australia
Libreria Evangelica N.S.W.
5 Bermaud Cress
Warilla, 2528



Australia
Libreria E.V. Hisp Amer.
40 Nottingham Road
Calamvale, 4116
Brisbane




Australia
ELE Trust
PO Box 5010
Brendale, Queensland 4500
Queensland 4500


Bueno ahora lo tengo ya por paises pero en diferentes archivos por paises...
La idea es filtrarlo y luego que muestre cada direccion filtrada en tablas..que pueda adaptar en etiquetas para imprimirlo...

Sobre lo del orden Hidek me mate pensando y bueno estuve revisando el codigo y tome la conclusion que el PHP_EOL no hace la funcion ya que lista Solo Estados Unidos como Array prueba a revisarlo mediante print_r para ver todo el contenido...
Yo llegue a poder dividir cada fragmento de texto mediante arrays pero.. no consegui nada mas..
La verad que tu idea es muy buena de coger cada fragmento a partir de 2 rupturas de linea es lo que queria hacer ahora yo pero desde Tel: hasta 1 ruptura de linea eliminarlo y añadirle una ruptura de linea para no perderla.. de esta forma me quedaria como he puesto ariba...

Lo de las tablas todavia no me he puesto pero claro necesito primero filtrar la informacion...gracias por la ayuda..
  #5 (permalink)  
Antiguo 18/03/2010, 08:39
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

bueno, no entendi nada mas que lo que te pedi en realidad... (eliminar datos innecesarios)
probado en windows y en linux y funciona sin problemas

Código PHP:
Ver original
  1. $archivo = file_get_contents("archivo.txt");
  2. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  3. echo nl2br($archivo);

pruebalo y me cuentas
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 18/03/2010, 10:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno, no entendi nada mas que lo que te pedi en realidad... (eliminar datos innecesarios)
probado en windows y en linux y funciona sin problemas

Código PHP:
Ver original
  1. $archivo = file_get_contents("archivo.txt");
  2. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  3. echo nl2br($archivo);

pruebalo y me cuentas
Muchisimas gracias me ha servido a la perfeccion... la verdad que me he quedao asi Donde puedo encontrar algun buen tutorial sobre regexp..
porque segun estudie yo siempre tenia que empezar asi ("/expresionregular/","",$variable)

y veo que tu empiezas con ('# e alucinao..
solo con eso ya me ha servido para filtrar y ya he hecho dos listas una con todos los datos (por tener) y otra para lo que seran las pegatinas .. ahora ya voy a estudiar sobre tablas...

No se si es muy complicado el tema.. pero la idea es que abra el archivo txt donde tengo todo ordenado... y me imprima en web separado por tablas las direcciones..
evidentemente esto depende de las medidas pero se podria por ejemplo que dividiera cada pagrafo de direccion..?
es decir que parta cada 2 saltos y cada pagrafo se convierta en un array y ese array incluirlo el contenido en una celda de la tabla.. no se si se me entiende.. pero es que soy novato y bueno.. poco a poco.. jijii Muchas gracias de verdad..
  #7 (permalink)  
Antiguo 18/03/2010, 10:37
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

prueba con esto haber si te sirve...

Código PHP:
Ver original
  1. $archivo = file_get_contents("archivo.txt");
  2. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  3. $array_archivo = preg_split('#([\n\r]{2,})#', $archivo);
  4. print_r($array_archivo);

y acerca del manual, esta lleno en internet.. manual de PCRE
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 18/03/2010, 16:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
prueba con esto haber si te sirve...

Código PHP:
Ver original
  1. $archivo = file_get_contents("archivo.txt");
  2. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  3. $array_archivo = preg_split('#([\n\r]{2,})#', $archivo);
  4. print_r($array_archivo);

y acerca del manual, esta lleno en internet.. manual de PCRE
Hola wenas sigo con el tinglao.. pues mira si lo adapto como me lo pusiste casi cada linea o menos me lo pone en un array no se cada cuanto.. la verdad algo relacionado con el \r no recuerdo que significaba en expresion regular.. la cosa que lo quite y deje el \n que ese si recuerdo que es el salto de linea es el uqe me interesa y me aparecen las direcciones...

como si se abriera el txt por lo que deduzco que ya cada direccion es un array si fuera el caso no lose.. solo me quedaria hacer las tablas que voy a ello ahora para uqe muestre cada array en una tabla.. bueno el codigo lo he dejado asi..
Código:
<?php
$archivo = file_get_contents("todo definitivo.txt");//Abrimos el archivo
$archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
Filtramos el Tel, Fax,email,website hasta una ruptura de linea...(No se si la elimina la ruptura..???lo demas si que lo elimina..
$array_archivo = preg_split('#([\n]{2,})#', $archivo); //dividimos cada 2 saltos de linea en un array
print_r(nl2br($array_archivo[0]));//Imprimimos todo el contenido..

?>
Bueno te explico Hidek1 para utilizar el nl2br y que me quede ordenado con saltos..y sea legible mas que nada tengo que especificar el array del archivo en otra ocasión ya me paso.. pero si por ejemplo especifico $array_archivo[1] ya me tira error no se porque por lo que veo el 0 significa que cargue todo pero no se la verdad.. me interesaría porque tal vez si por ejemplo pongo $array_archivo[500] poder ver la dirección que este en ese array de esta forma como tengo todo ordenado y con algun ciclo se podria hacer un for mismo tal vez.. o while..para la tabla y de esta forma se haria mas automatico las pegatinas.. he probado con $array_archivo[500] y me sale esto
Código:
: Undefined offset: 500 in C:\wamp\www\celdas.php on line 5
gracias por la ayuda la verdad ;)
  #9 (permalink)  
Antiguo 19/03/2010, 06:19
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

claro, volvi a olvidar que windows trabaja de forma misteriosa x'D
soo cambia esta linea

$array_archivo = preg_split('#([\n\r]{2,})#', $archivo);

por esto

$array_archivo = preg_split('#([\n\r]{3,})#', $archivo);

asi si funciona, (testeando desde wintendo!)

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #10 (permalink)  
Antiguo 19/03/2010, 07:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
claro, volvi a olvidar que windows trabaja de forma misteriosa x'D
soo cambia esta linea

$array_archivo = preg_split('#([\n\r]{2,})#', $archivo);

por esto

$array_archivo = preg_split('#([\n\r]{3,})#', $archivo);

asi si funciona, (testeando desde wintendo!)

saludos!
Perfecto tio me lo mete cada uno en un array eres un genio...
una consulta sobre el codigo.. porque los datos salen directamente en arrays ? eso es lo que hace el preg_split no? verdad que se podria hacer tambien con explode o implode como no lo se porque la estructura no la conozco mucho.. ahora me voy a estudiar el tema de las tablas pero desde luego que me ha funcionado y seguro que me va a ser util a la hora de diseñarlo..
poruqe puedo especificar la dirreccion en concreto.. con decir array1 x ejemplo o 400 y me sale solo ese.. de verdad que te lo super agradezco...
ahora voy a mirarme las tablas y hacer lo que te dije..
yo de momento lo he dejado asi y veo todos los datos ordenados y separados x dos saltos de linea..

Código PHP:
<?php    
$archivo 
file_get_contents("todo definitivo.txt");
$archivo preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#'''$archivo);
$array_archivo preg_split('#([\n\r]{3,})#'$archivo);

for(
$i=0;$i<1007;$i++)

print_r(nl2br($array_archivo[$i]."<br>"."<br>"));



?>
  #11 (permalink)  
Antiguo 19/03/2010, 08:26
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

bueno lo puedes hacer asi, si te fijas ahora queda todo en arrays multimensionales

Código PHP:
Ver original
  1. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  2. $array_archivo = preg_split('#([\n\r]{3,})#', $archivo);
  3. foreach($array_archivo as $value) $array_archivo_nuevo[] = explode("\n", $value);
  4. print_r($array_archivo_nuevo);

para llamar por ejemplo el la direccion del tercer elemento seria

Código PHP:
Ver original
  1. echo $array_archivo_nuevo[3][2];

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #12 (permalink)  
Antiguo 19/03/2010, 14:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno lo puedes hacer asi, si te fijas ahora queda todo en arrays multimensionales

Código PHP:
Ver original
  1. $archivo = preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#', '', $archivo);
  2. $array_archivo = preg_split('#([\n\r]{3,})#', $archivo);
  3. foreach($array_archivo as $value) $array_archivo_nuevo[] = explode("\n", $value);
  4. print_r($array_archivo_nuevo);

para llamar por ejemplo el la direccion del tercer elemento seria

Código PHP:
Ver original
  1. echo $array_archivo_nuevo[3][2];

saludos!
Hola wenas he estado mirando el codigo y gracias pero no entiendo lo que intentas hacer ?Divide los datos demasiado...

no se para que es eso..
fijate en este codigo..


Código PHP:
<?php     
$archivo 
file_get_contents("todo definitivo.txt"); 
$archivo preg_replace('#[\n\r](Tel|Fax|E-mail|Web Site):([^\n]*)#'''$archivo); 
$array_archivo preg_split('#([\n\r]{3,})#'$archivo); 

for(
$i=0;$i<1007;$i++) 

print_r(nl2br($array_archivo[$i]."<br>"."<br>")); 



?>

si haces la prueba sin el for y pones
Código PHP:
print_r(nl2br($array_archivo[232]."<br>"."<br>")); 
por ejemplo te muestra ya ese array en concreto que es toda la direccion entera con eso me seriviria supongo yo no?
es que no entiendo porque lo divides mas ?
Gracias de todas formas ;)
  #13 (permalink)  
Antiguo 19/03/2010, 14:58
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

es para que puedas acceder a cualquier linea de cualquier dato

te pongo un ejemplo con una libreria

lo que hice primero es separar todos los textos en diferentes hojas gigantes con la informacion
y la segunda separacion es esa hoja gigante la transforme en varias paginas para poder asi acceder a la informacion precisa
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 19/03/2010, 15:54
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por Hidek1 Ver Mensaje
es para que puedas acceder a cualquier linea de cualquier dato

te pongo un ejemplo con una libreria

lo que hice primero es separar todos los textos en diferentes hojas gigantes con la informacion
y la segunda separacion es esa hoja gigante la transforme en varias paginas para poder asi acceder a la informacion precisa
Minimo que te de karma, sino morira un usuario de forosdelweb
  #15 (permalink)  
Antiguo 20/03/2010, 07:02
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Filtrar contenido de un txt

Cita:
Iniciado por dantrix Ver Mensaje
Minimo que te de karma, sino morira un usuario de forosdelweb
Que quieres decir con eso?xDD
  #16 (permalink)  
Antiguo 20/03/2010, 18:11
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Filtrar contenido de un txt

mi firma xD!...
Cita:
☯ Cada vez que no me das karma, dios mata a un usuario de forosdelweb.. ☯
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: contenido, filtrar, 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 14:08.