Foros del Web » Programando para Internet » PHP »

Convirtiendo datos txt a php¿¿

Estas en el tema de Convirtiendo datos txt a php¿¿ en el foro de PHP en Foros del Web. Hola a todos despues de mucho tiempo me he encontrado con un gran dilema.. Resulta que tengo un txt con la siguiente estructura: Principio txt: ...
  #1 (permalink)  
Antiguo 09/03/2011, 10:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Convirtiendo datos txt a php¿¿

Hola a todos despues de mucho tiempo me he encontrado con un gran dilema..

Resulta que tengo un txt con la siguiente estructura:



Principio txt:


PAIS
NOMBRE
CALLE y Numero
Codigo postal, Localidad



Localidad
Nombre
Calle y Numero
Localidad
Tel: Tel1/ TEL2




PAIS
NOMBRE
Calle y numero
Localidad
Telefono




PAIS
NOMBRE
CALLE NUMERO
Codigo Postal, Localidad y Comunidad (O solo uno de los dos)
Tel: TEL1 // TEL2
E-mail:[email protected]


PAIS
NOMBRE
Calle y numero
Codigo postal, Localidad
Comunidad
Tel: Tel1 Tel2
Fax: Fax1 Fax2
E-mail: [email protected]


Bien teniendo algo asi mas o menos..
queria exportarlo a sql lo unico que se me ocuria para no complicarme es convertirlo a esto:


insert into contactos (contactoid, nombreap, calle, Localidad, cp, Pais,verify,web,EMAIL) values ('$contactoid','$nombreap','$calle','$localidad',' $cp','$pais','$verify','$web','$email');



lo unico que se me ocurre es que al principio de cada linea del txt me ponga esto:

insert into contactos values

(NULL,"nombre","calle","localidad,"codigopostal"," pais","sin verificar","url","mail"),
(NULL,"nombre","calle","localidad,"codigopostal"," pais","sin verificar","url","mail"),
(NULL,"nombre","calle","localidad,"codigopostal"," pais","sin verificar","url","mail");




insert into contacto_telefonos (contactoid,telefono) SELECT MAX(contactoid),'$telf[$i]' FROM contactos ;


lo mismo con este que es para telefonos tengo 4 campos y utilizo la misma variable el cual se convierte en un array y luego lo voy pasando y grabando en la misma tabla lo unico que me genera otro telfid pero con el mismo contactoid y telefono diferente..

No se si me he explicado bien..

empece a intentar hacer algo con expresiones regulares pero es muy complicado para llegar a algo asi por lo cual ni idea a ver si alguien me puede ayudar..
Ademas lo mas dificil es que veo que va cambiando el patron por la forma como estan metidos los telefonos o fax a veces la localidad esta arriba y a veces no..
Entonces me pregunto paso de todo y lo inserto a mano en la base de datos a traves del formulario?
Mi dilema es que son 1000 y pico direcciones algunas con webs o mails pero no todas son iguales y e hay la gran complicación y no se como hacer lo que quiero..
Saludos y gracias desde ya ;)
  #2 (permalink)  
Antiguo 10/03/2011, 09:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Convirtiendo datos txt a php¿¿

Es dificil ayudarte. No te explicas bien, y tu archivo txt no parece real (no contiene datos reales).

Podes recorrer el archivo linea a linea y detectar ciertos strings como para saber que almacenan. Y así convertir a PHP. Luego, no habría problema entre PHP y mysql.

  #3 (permalink)  
Antiguo 11/03/2011, 02:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Convirtiendo datos txt a php¿¿

Ya... es que es un poco complicado he puesto la estructura es exacta..no todos tienen toas las combinaciones sin embargo yo la he puesto con todas las posibles variantes...
son 1000 y pico y
De momento he hecho un preg_split y tengo todo en arrays y he podido mediante expresiones regulares cada linea donde tengo un dato ponerle "dato", la idea es para generar el archivo sql e importarlo directamente solo eso..
entonces pensando se me estaba ocuriendo de intentar poner antes del primer" poner por ejemplo $pais='"dato",';
$nombre='"dato",';


y asi sucesivamente luego tendria que recorer la variable ya que supongo al ser la misma variable se convierte en un array ..
Al ejecutarlo luego en php veria cada linea con php para luego copiarlo y en el mismo documento poner los echos correspondientes con un bucle etc..
es una forma que se me a ocurrido pero no se si es la mejor..
estoy haciendo un repaso de todo lo que aprendi para ver como puedo replantear.

Por otro lado como dije con un preg_split tengo cada linea en arrays y cada dos empty (vacios) tengo una dirección diferente..y esta puede tener mas datos o no lo que si tengo fijo es un patron es decir (la primera linea es un pais, la segunda el nombre....)
he conseguido expresiones regulares que puedo obtener por ejemplo cada primera linea
y ciertas cosas pero a la hora de la verdad no se como pasar a la siguiente linea..
a ver si con un poco de ayuda puedo espavilarme y gracias desde ya.. ;)
Prefiero saber que funcion me permitiria hacer esto.. tengo un foreach y todo me funciona correctamente pero mi problema es que si consigo con x ejemplo (if (preg_match("/expresion/",$datos,$coincidencias)

{
que capture esa linea y me la meta en una variable x ejemplo

}
bien esto lo puedo hacer pero solo con cada 2 saltos y capturar la primera linea entre "" seria el pais pero mi pregunta es como salto a la otra ?


Lo siento por mi mal expresion no se como explicarme y creo que lo lio mas...
  #4 (permalink)  
Antiguo 15/03/2011, 11:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Convirtiendo datos txt a php¿¿

Hola a todos, he avanzado bastante y solo me falla una expresion regular..
y necesito una expression regular que me busque 2 saltos de linea y letras yo lo habia intentado asi: "/\n\n[A-z]/" bbueno he probado de todo y la cuestion es que con \n no me funciona..
El codigo funciona ya que en vez de poner esto puse el nombre de 1 pais y me funciona pero ahora uqiero que encunetre cada salto de linea y letras no se si seria \r en vez de \n??
de todas formas he probado de todo y en LiveRegexp me funciona pero a la realidad no no se porque.. saludos y gracias desde ya ;)
  #5 (permalink)  
Antiguo 18/03/2011, 07:34
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Convirtiendo datos txt a php¿¿

Bueno sigo con el dichoso tema..
he avanzado pero no consigo lo que quiero voy a poner un ejemplo real copiar lo siguiente en un txt..

España
nombre
dirección
CP y localidad
comunidad
Tel:238284934
Fax:29399393494
Mail:[email protected]
WebSite:www.google.com


España
nombre
dirección
CP y localidad
Tel:238284934
Fax:29399393494
Mail:[email protected]
WebSite:www.google.com


España
nombre
dirección
CP y localidad
comunidad
Tel:238284934
Mail:[email protected]
WebSite:www.google.com


España
nombre
dirección
CP y localidad
comunidad
Tel:238284934
Fax:29399393494

bien guardarlo con nombre insertando.txt y ponerlo junto con el siguiente script..
yo lo llamo exportar.php pero eso da =

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Generando SQL</title>
</head>

<body>

<?php

set_time_limit(8000);
$abrir=file_get_contents("insertando.txt","r");
$contar=preg_split("/[\n\r\n\r]+/",$abrir);

$n=0;

while($n<4150)
{

if(preg_match("/[A-z]|[0-9]|[\n\r]/",$contar[$n],$concis))
{
if(preg_match("/[A-z]/",$contar[$n],$concis))
{
echo "Linea ".$n." Pais :".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{
echo "Linea ".$n." Nombre :".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{
echo "Linea ".$n." Dirección :".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{
echo "Linea ".$n." CP y Comunidad: ".$contar[$n]."<br>";
$n++;
}

if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{
echo "Linea ".$n." Comunidad: ".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{
echo "Linea ".$n." Tel: " .$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{

echo "Linea ".$n." Fax: ".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{

echo "Linea ".$n." Mail: ".$contar[$n]."<br>";
$n++;
}
if(preg_match("/[A-z]|[0-9]/",$contar[$n],$concis))
{

echo "Linea ".$n." WebSite: ".$contar[$n]."<br>";
echo "<br>";
}
}
else
{
echo "Linea ".$n." Vacia y saliendo"."<br>";
echo "<br>";
}
$n++;




}
echo "fin de archivo";
?>

</body>
</html>

Bien explico lo que me ocurre el script me funciona salvo que necesito verificar linea a linea.. tengo todos los datos en el array $contar[$n] gracias al pregsplit quito los espacios y saltos con 1 minimo de 2 ya que cada dirección tiene un minimo de 2 saltos y retornos claro..
bien hasta hay todo bien.
Mi problema es que el Pais,Nombre y Dirección y CP y localidad generalmente son siempre fijos los demas pueden variar como el ejemplo..Puedo tener en el txt un Tel: y fax no por lo siguiente me mostrara Comunidad: Tel:... en donde ocurra esto y se me descomensa todo...

Probe de hacer un if dentro del if de comunidad por ejemplo que es el que mas problemas me da
if(preg_match("/[Tel:]/",$contar[$n],$concidencias)
{
echo "no hay comunidad"."<br>";
}
He probado de todo y el resultado no es el que quiero, a ver si alguien puede hecharme una mano lo super agradeceria ;)
por lo que el resultado no es el deseado se vera desordenado..
He intentado ponerle condiciones en los if con preg_match por ejemplo que si en comunidad coincide con Tel: $n++; pero no lo consigo.. para nada
no se si me estoy liando y cual seria la mejor forma de hacerlo pero tampoco se por donde tirar lo super agradeceria la ayuda...

Etiquetas: 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 02:43.