Foros del Web » Programando para Internet » PHP »

Buscar valores repetidos en 2 archivos txt

Estas en el tema de Buscar valores repetidos en 2 archivos txt en el foro de PHP en Foros del Web. Hola, tengo dos archivos txt el primero contiene 5.000 referencias numericas con esta estructura: 100 200 300 400 ... 4.000 5.000 el segundo contiene codigo ...
  #1 (permalink)  
Antiguo 10/09/2014, 11:40
 
Fecha de Ingreso: abril-2010
Mensajes: 96
Antigüedad: 14 años, 7 meses
Puntos: 0
Buscar valores repetidos en 2 archivos txt

Hola, tengo dos archivos txt el primero contiene 5.000 referencias numericas con esta estructura:

100
200
300
400
...
4.000
5.000

el segundo contiene codigo html y puede o no puede tener los datos del primer txt.

Necesito recorrer el primer archivo, no se que es mejor si linea a linea o pasarlo a un array separado por comas y luego comparar cada una de las referencias numericas con el segundo archivo. si encuentra coincidencia...me gustaria ir introduciendolos en un array, tengo el siquiente codigo, creo que no voy por buen camino, a ver si me podeis ayudar.

Código PHP:
  $contenido_referencias = ('cache/referencias.txt');     // contiene referencias    
 
$contenido_html file('cache/html.txt');    //contiene codigo html
     
foreach ($contenido_referencias as $cuales)
{
             
             list() = 
explode(",",$cuales);
             
$igual array_search $cuales$contenido_html ); 
               if ( 
$igual 
               { 
                  echo 
"resultado";  // aqui voy introduciendo las referencias en un array[].
                   

            } 
  #2 (permalink)  
Antiguo 10/09/2014, 12:35
Avatar de javier6_almansa  
Fecha de Ingreso: mayo-2014
Mensajes: 34
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Buscar valores repetidos en 2 archivos txt

Cita:
Iniciado por teudiss Ver Mensaje
Hola, tengo dos archivos txt el primero contiene 5.000 referencias numericas con esta estructura:

100
200
300
400
...
4.000
5.000

el segundo contiene codigo html y puede o no puede tener los datos del primer txt.

Necesito recorrer el primer archivo, no se que es mejor si linea a linea o pasarlo a un array separado por comas y luego comparar cada una de las referencias numericas con el segundo archivo. si encuentra coincidencia...me gustaria ir introduciendolos en un array, tengo el siquiente codigo, creo que no voy por buen camino, a ver si me podeis ayudar.

Código PHP:
  $contenido_referencias = ('cache/referencias.txt');     // contiene referencias    
 
$contenido_html file('cache/html.txt');    //contiene codigo html
     
foreach ($contenido_referencias as $cuales)
{
             
             list() = 
explode(",",$cuales);
             
$igual array_search $cuales$contenido_html ); 
               if ( 
$igual 
               { 
                  echo 
"resultado";  // aqui voy introduciendo las referencias en un array[].
                   

            } 

Creo que lo mejor es crearte dos array y en cada uno poner las referencias ( con explode o como lo tengas separado en el txt), luego recorres el primer array con un for, y dentro recorres el segundo, y vas comparando referencias:

Código PHP:

$referencias1 
= array();
$referencias2 = array();

// Añades las referencias de cada archivo a su correspondiente array

// .....

// Y los recorres guardando los valores duplicados en otro array

$duplicados = array();

foreach(
$referencias1 as $referencia1){
       foreach(
$referencias2 as $referencia2){
               if(
$referencia1 == $referencia2){
                     
$duplicados[] = referencia2;
               }
       }

  #3 (permalink)  
Antiguo 10/09/2014, 13:02
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: Buscar valores repetidos en 2 archivos txt

Si pones el codigo de tu html te podria ayudar mas por que hay que tener encuenta varias cosas.

Cita:
Comprobar el formato numerico, para que si por ejemplo tienes el numero 1000 no te lance errores por que php reconocera como 0,1,10,100,1000. Mirando la estructura de tu html se podria hacer con regex facilmente.
Cita:
Para obtener el array de tu archivo de referencias no tendras mas que usar un file y te crea el array. Asegurate de filtrar los saltos de linea, tabulaciones, espacios en blanco, etc.
__________________
http://www.roglastudios.es
  #4 (permalink)  
Antiguo 10/09/2014, 13:18
 
Fecha de Ingreso: abril-2010
Mensajes: 96
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Buscar valores repetidos en 2 archivos txt

Cita:
Iniciado por Dalam Ver Mensaje
Si pones el codigo de tu html te podria ayudar mas por que hay que tener encuenta varias cosas.
javier6_almansa esa idea me valdria si el segundo archivo a comparar no fueses codigo html .

Dalam, este seria el codigo html. "te pego aqui arriba los numeros en rojo que quiero buscar desde el otro array"


href="ver.asp?id=3870">523014</a>
href="ver.asp?id=3869">523013</a>
href="ver.asp?id=3868">523012</a>

Código HTML:
<!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=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<tr><td valign="top" width="33%" style="border-right:1px solid #746955">
<table width="150" border="0" align="center"><tr><td style="color:#352A16; font-weight:bold"><!--a class="noticias" href="ver.asp?cid="-->Ref. <span style="color:#ffffff"><a class="producto" href="ver.asp?id=3870">523014</a></span>
<!-- /a --></td></tr>
<tr><td align="center" onClick="javascript:(window.location.href='ver.asp?id=3870')" onMouseOver="style.cursor='hand'">
<img src="http://www.forosdelweb.com/f18/fotos/523014_449.jpg">
</td></tr>
<tr><td style="background-color:#732028;color:#FFFFFF;line-height:17px;" align="center">160 X 2,8 X 180 cm.</td></tr>
</table>
</td>

<td valign="top" width="33%" style="border-right:1px solid #746955">
<table width="150" border="0" align="center"><tr><td style="color:#352A16; font-weight:bold"><!--a class="noticias" href="ver.asp?cid="-->Ref. <span style="color:#ffffff"><a class="producto" href="ver.asp?id=3869">523013</a></span><!-- /a --></td></tr>
<tr><td align="center" onClick="javascript:(window.location.href='ver.asp?id=3869')" onMouseOver="style.cursor='hand'">
<img src="http://www.forosdelweb.com/f18/fotos/523013_448.jpg">
</td></tr>
<tr><td style="background-color:#732028;color:#FFFFFF;line-height:17px;" align="center">160 X 2 X 180 cm.</td></tr>
</table>
</td>

<td valign="top" width="33%">
<table width="150" border="0" align="center"><tr><td style="color:#352A16; font-weight:bold"><!--a class="noticias" href="ver.asp?cid="-->Ref. <span style="color:#ffffff"><a class="producto" href="ver.asp?id=3868">523012</a></span><!-- /a --></td></tr>
<tr><td align="center" onClick="javascript:(window.location.href='ver.asp?id=3868')" onMouseOver="style.cursor='hand'">
<img src="http://www.forosdelweb.com/f18/fotos/523012_447.jpg">
</td></tr>
<tr><td style="background-color:#732028;color:#FFFFFF;line-height:17px;" align="center">160 X 2,6 X 180 cm.</td></tr>
</table>
</td>
</tr>
</body>
</html>


Última edición por teudiss; 10/09/2014 a las 13:24
  #5 (permalink)  
Antiguo 10/09/2014, 15:06
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: Buscar valores repetidos en 2 archivos txt

No lo e chequeado, pero esto deberia de valerte
Código PHP:
Ver original
  1. <?php
  2. function GetProducts($file){
  3.     $regex = "|class=\"producto\"[^>]+>([0-9]*)</[^>]+>|U";
  4.     if(!is_file($file)) return false;
  5.     preg_match_all($regex,file_get_contents($file), $result);
  6.     foreach($result[1] as $key =>$value) $result[$key] = (int) $value;
  7.     return $result;
  8. }
  9.  
  10. function GetListProducts($file){
  11.     if(!is_file($file)) return false;
  12.     $array = array_filter(file($file));
  13.     foreach($array as $key =>$value) $array[$key] = (int) $value;
  14.     return $array;
  15. }
  16.  
  17. function Check($fileReference,$fileHtml){
  18.     $list = GetListProducts($fileReference);
  19.     $html = GetProducts($fileHtml);
  20.     if($list !== false && $html !== false)
  21.         $products = array_intersect($html,$list);
  22.     else
  23.         return false;
  24.     return $products;
  25. }
  26.  
  27.  
  28. //ejemplo de uso con referencia de tus archivos
  29. $products = Check('cache/referencias.txt','cache/html.txt');
  30. //Mostramos el array con los resultados por ejemplo
  31. print_r($products);
__________________
http://www.roglastudios.es

Última edición por Dalam; 10/09/2014 a las 15:15
  #6 (permalink)  
Antiguo 11/09/2014, 04:28
 
Fecha de Ingreso: abril-2010
Mensajes: 96
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Buscar valores repetidos en 2 archivos txt

Cita:
Iniciado por Dalam Ver Mensaje
No lo e chequeado, pero esto deberia de valerte
Código PHP:
Ver original
  1. <?php
  2. function GetProducts($file){
  3.     $regex = "|class=\"producto\"[^>]+>([0-9]*)</[^>]+>|U";
  4.     if(!is_file($file)) return false;
  5.     preg_match_all($regex,file_get_contents($file), $result);
  6.     foreach($result[1] as $key =>$value) $result[$key] = (int) $value;
  7.     return $result;
  8. }
  9.  
  10. function GetListProducts($file){
  11.     if(!is_file($file)) return false;
  12.     $array = array_filter(file($file));
  13.     foreach($array as $key =>$value) $array[$key] = (int) $value;
  14.     return $array;
  15. }
  16.  
  17. function Check($fileReference,$fileHtml){
  18.     $list = GetListProducts($fileReference);
  19.     $html = GetProducts($fileHtml);
  20.     if($list !== false && $html !== false)
  21.         $products = array_intersect($html,$list);
  22.     else
  23.         return false;
  24.     return $products;
  25. }
  26.  
  27.  
  28. //ejemplo de uso con referencia de tus archivos
  29. $products = Check('cache/referencias.txt','cache/html.txt');
  30. //Mostramos el array con los resultados por ejemplo
  31. print_r($products);

Dalam, Perfecto !!!!! funciona pero me he dado cuenta que algunas referencias tienen este formato:

1027C
5611 4020
5396-4185
834006-5-7
5601GR 4325GR
2182CR(2)
1458-54-63-55
A034FS

He estado haciendo pruebas con ex regulares y no consigo sacarlas.

Exite alguna forma de que busque entre > < cualquier caracte, espacio guiones etc...????

Última edición por teudiss; 11/09/2014 a las 14:08
  #7 (permalink)  
Antiguo 12/09/2014, 02:52
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: Buscar valores repetidos en 2 archivos txt

Cita:
Iniciado por teudiss Ver Mensaje
Dalam, Perfecto !!!!! funciona pero me he dado cuenta que algunas referencias tienen este formato:

1027C
5611 4020
5396-4185
834006-5-7
5601GR 4325GR
2182CR(2)
1458-54-63-55
A034FS

He estado haciendo pruebas con ex regulares y no consigo sacarlas.

Exite alguna forma de que busque entre > < cualquier caracte, espacio guiones etc...????
Código PHP:
Ver original
  1. <?php
  2. function GetProducts($file){
  3.     $regex = "|class=\"producto\"[^>]+>(.*)</[^>]+>|U";
  4.     if(!is_file($file)) return false;
  5.     preg_match_all($regex,file_get_contents($file), $result);
  6.     $result = array_filter($result[1]);
  7.     return $result;
  8. }
  9.  
  10. function GetListProducts($file){
  11.     if(!is_file($file)) return false;
  12.     $array = array_filter(file($file));
  13.     return $array;
  14. }
  15.  
  16. function Check($fileReference,$fileHtml){
  17.     $list = GetListProducts($fileReference);
  18.     $html = GetProducts($fileHtml);
  19.     if($list !== false && $html !== false)
  20.         $products = array_intersect($html,$list);
  21.     else
  22.         return false;
  23.     return $products;
  24. }
  25.  
  26.  
  27. //ejemplo de uso con referencia de tus archivos
  28. $products = Check('cache/referencias.txt','cache/html.txt');
  29. //Mostramos el array con los resultados por ejemplo
  30. print_r($products);
Cita:
Asi busca todas las ocurrencias que esten entre class=\"producto\"> y <
__________________
http://www.roglastudios.es

Última edición por Dalam; 12/09/2014 a las 03:03

Etiquetas: html, repetidos, 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 10:36.