Foros del Web » Programando para Internet » PHP »

Comparacion de datos de .txt

Estas en el tema de Comparacion de datos de .txt en el foro de PHP en Foros del Web. Buenos dias, tengo un problemita con el manejo de archivos y no se donde esta el error! tengo 2 listas de emails una es de ...
  #1 (permalink)  
Antiguo 03/05/2010, 06:58
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 15 años, 3 meses
Puntos: 4
Comparacion de datos de .txt

Buenos dias, tengo un problemita con el manejo de archivos y no se donde esta el error!

tengo 2 listas de emails una es de este año y otra es del año pasado, lo que quiero hacer es sacar una sola lista con los emails que no se repitan de las otras dos listas, se entiende? quiero una sola lista confeccionada con los datos NO REPETIDOS de las otras dos listas.

entonces que hago? recorro las dos listas y cuando encuentro que hay coincidencias aviso que email es, cuando no hay coincidencias, guardo ese dato (email) en una lista nueva. Pero el problema es que me guarda todos los datos en la nueva lista.

Les dejo el codigo para que vean cual puede ser el error!

Código PHP:
$norepetidos=fopen("norepetidos.txt","w");
$gestor fopen("[marzo-2009].txt""r+");
if (
$gestor) {
    while (!
feof($gestor)) {
        
$buffer=fgets($gestor,4096);    
$gestor2 fopen("[marzo-2010].txt""r+");
if (
$gestor2) {
    while (!
feof($gestor2)) {
        
$buffer2 fgets($gestor24096);
        if(
$buffer==$buffer2){
        echo 
"El email ".$buffer2." se encuentra repetido.<br />";}else{
        
fwrite($norepetidos,$buffer2);}
    }
    
fclose($gestor2);
}

    }
    
fclose($gestor);

espero alguno sepa que puede ser! muchas gracias.!
  #2 (permalink)  
Antiguo 03/05/2010, 07:23
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Comparacion de datos de .txt

Se me ocurre el siguiente codigo, tal vez sea un poco mas largo, pero creo q es mas sencillo

Si tenes una lista de emails, por lo menos tenes un espacio entre direccion y direccion, o un guion o ALGO que los separe o delimite. Fijate lo que hago:

Código PHP:
<?php
# Todos los nombres de archivo que vas a revisar
$files = array('archivo1.txt''archivo2.txt');

$newFile 'sinRepetir.txt';

# Supongo que el delimitador es un guion medio (cambialo sino)
$delim '-';

$f1 file($files[0]);
$f2 file($files[1]);

$f1 explode($delim,$f1);
$f2 explode($delim,$f2);

# Cantidad de mails en el array $f2
$cant count($f2);

foreach(
$f1 as $c1){
$cont 0;
    foreach(
$f2 as $c2){
        if(
strtolower($c1) != strtolower($c2)){
             
$cont++;
        }
    }
    if(
$cont == $cant){
        
# Si no es igual a ninguno, lo guardo.
        
$ok[] = $c1;
    }
}

# Por ultimo, guardamos todos los datos del array en una nueva lista sin repetir

foreach($ok as $save){
    
# Salto de linea entre mail y mail
    
$str .= $save."\r\n";
}

$fp fopen($newFile'w+');
fwrite($fp,$str);
fclose($fp);
?>
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 03/05/2010, 07:30
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Comparacion de datos de .txt

Agradezco mucho tu respuesta!

me da este error:

Código:
Warning: Invalid argument supplied for foreach() in C:\AppServ\www\phpmailer-new\examples\verificar.php on line 35
en la linea 35, la cual es esta:

Código PHP:
foreach($ok as $save){ 


no me llevo bien con los arreglos (Pendiende :P )

un abrazo!
  #4 (permalink)  
Antiguo 03/05/2010, 07:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Comparacion de datos de .txt

Verifica de esta forma sencilla
Código PHP:
Ver original
  1. <?php
  2. $arr = file('[marzo-2009].txt');
  3. $arr = array_unique($arr);
  4. file_put_contents('norepetidos.txt',$arr);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 03/05/2010, 07:35
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Comparacion de datos de .txt

Comenta todo ese foreach y antes agregale esto

Código PHP:
echo $ok[0]; 
A ver si $ok tiene o no algo adentro

Un saludo.

PD: me imagino que cambiaste los nombres de archivo del array $files al principio...

EDIT: no sabia que existia esa funcion abimaelrc! Desde luego que es mas sencilla! Pero igual creo que lo que el necesita no es eso, necesita comparar los datos de 2 txt

Saludo!!
__________________
HV Studio
Diseño y desarrollo web
  #6 (permalink)  
Antiguo 03/05/2010, 07:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Comparacion de datos de .txt

Puede usar un array_merge, une los dos array y luego hace lo de array_unique. Algo así
Código PHP:
Ver original
  1. <?php
  2. $arr = file('[marzo-2009].txt');
  3. $arr2 = file('norepetidos.txt');
  4. $nuevoArr = array_merge($arr,$arr2);
  5. $arrFinal = array_unique($nuevoArr );
  6. file_put_contents('nuevoTxt.txt',$arrFinal);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 03/05/2010, 07:42
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Comparacion de datos de .txt

Si, cambie los nombres.

ok[0]; esta vacio!, deberia tener al menos 1 email ya que repeti a proposito dos o tres emails para probar el codigo.

edit: ahora voy a ver ese codigo abimael.

Muchas gracias a los dos por el interes!
  #8 (permalink)  
Antiguo 03/05/2010, 07:43
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Comparacion de datos de .txt

Cita:
Iniciado por abimaelrc Ver Mensaje
Puede usar un array_merge, une los dos valores en uno solo y luego hace lo de array_unique.
Sabes demasiado abimaelrc !!!! Excelente!
__________________
HV Studio
Diseño y desarrollo web
  #9 (permalink)  
Antiguo 03/05/2010, 07:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Comparacion de datos de .txt

Corregí el código, lo repito aca
Código PHP:
Ver original
  1. <?php
  2. $arr = file('[marzo-2009].txt');
  3. $arr2 = file('norepetidos.txt');
  4. $nuevoArr = array_merge($arr,$arr2);
  5. $arrFinal = array_unique($nuevoArr);
  6. file_put_contents('nuevoTxt.txt',$arrFinal);
Les recomiendo que lean sobre las funciones de array, son buenas a la hora de hacer este tipo de trabajos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 03/05/2010, 07:50
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Comparacion de datos de .txt

La verdad, muchachos! muchisimas gracias a los dos!

una pequeña introduccion...

array_merge: Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.

y

array_unique: Removes duplicate values from an array.


La verdad que leyendo este foro uno aprende muchas cosas nuevas, las cuales se sabrian si leyeramos directamente todo el manual de php jajaja!!

Muchas gracias nuevamente a los dos!

Etiquetas: comparacion, 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 21:53.