New question

Question:

Date: 15-08-2018 21:43:07 (In Spanish)

Extraer información de algunas lineas de un archivo CSV con PHP[Unresolved]

Hola a todos; estoy tratando de extraer información de ciertas lineas de un archivo csv, especificamente quiero extraer información solo de las lineas donde esten correos electronicos. Dichos correos electronicos se encuentran en el atributo value de un input radio.

Para que lo vean mejor, aqui muestro algunas lineas del archivo csv:

<td> <input name="pidId:pidFrm:j_idt63:j_idt67:j_idt68" id="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0" type="radio" value="silvia_jomilau@hotmail.com"><label for="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0"> s*****_*******@hotmail.com</label></td>,27565603
#EANF#,25097610
#EANF#,28575038
#EANF#,28876721
#EANF#,25205322
#EANF#,26802416
#EANF#,27827679
#EANF#,28531413
<td> <input name="pidId:pidFrm:j_idt63:j_idt67:j_idt68" id="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0" type="radio" value="berenguerpaola@gmail.com"><label for="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0"> b*************@gmail.com</label></td>,28322564
#EANF#,26053281
#EANF#,28830243
#EANF#,27948589
#EANF#,28068114
#EANF#,27680621
#EANF#,25337677
#EANF#,28037273



como veran, existen algunas lineas en el archivo csv que contienen inputs tipo radio, y esos a su vez contienen un atributo value con el correo electronico que deseo extraer.

He manejado anteriormente archivos CSV por medio de PHP con las funciones convencionales destinadas para tal fin, pero normalmente los datos que estaban dentro del archivo estaban dispuestos de otra forma que permitia una extraccián de datos más sencilla. En este caso me he liado al querer extraer solo algunas lineas y omitir las que no posean inputs, y a su vez extraer de dichos inputs los correos electronicos que estan en los atributos value.

Agradeceria si me pudieran ayudar a aclarar mi duda de cómo podria extraer esa información.

Hasta el momento poseo este codigo:


$archivo = fopen("mails.csv","rb");

     while(feof($archivo) == false)
     {

       echo fgets($archivo). "<br />";


     }

    	fclose($archivo); 


me permite abrir el archivo y obtener linea por linea el contenido del archivo csv, solo que no he logrado tomar solo las lineas que posean los inputs radio y guardarlas por ejemplo en un array y saltar las lineas que no posean estos inputs.
Alguna idea de cómo podría lograr obtener la información que necesito?.
Tags: CSV - PHP - PHP Advanced - PHP7 - Question Votes: 0 - Answers: 3 - Views: 10 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 16-08-2018 14:05:39 Ok bro podrias utilizar expresiones regulares para detectar el email en una linea y agregarlo a un array final, sería algo así:

    //Ejemplo de tus lineas
    $emails = [
        '<td> <input name="pidId:pidFrm:j_idt63:j_idt67:j_idt68" id="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0" type="radio" value="silvia_jomilau@hotmail.com"><label for="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0"> s*****_*******@hotmail.com</label></td>,27565603',
        '<td> <input name="pidId:pidFrm:j_idt63:j_idt67:j_idt68" id="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0" type="radio" value="berenguerpaola@gmail.com"><label for="pidId:pidFrm:j_idt63:j_idt67:j_idt68:0"> b*************@gmail.com</label></td>,28322564'
    ];
    
    //Array final
    $sale = [];
    
    //Recorremos las lineas
    foreach($emails as $em){
    //Detectamos si hay un email en ella
        preg_match("/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/", $em, $email);
    
    //Si hay un email lo agregamos al array final
        if($email){
            array_push($sale,$email[0]);
        }
        
    }
    //mostramos el resultados
    var_dump($sale);
    


    El resultado sería esto:
    array(2) { [0]=> string(26) "silvia_jomilau@hotmail.com" [1]=> string(24) "berenguerpaola@gmail.com" }
      Votes: 2 - Link answer
     
  • Date: 17-08-2018 03:27:59 Gracias amigo, me ha servido tu ejemplo. Mil gracias.   Votes: 0 - Link answer
     
  • Date: 17-01-2019 00:20:09 tienes que recorrer todo el csv... y en cada linea comprobar si hay o no email y si hay email guardarlo en un array para usarlo despues... algo asi añadido a tu codigo....

    $archivo = fopen("mails.csv","rb");
    $elarray[];
    $aa=-1;
    while(feof($archivo) == false)
    {
    echo fgets($archivo). "<br />";//esto lo quitaria;
    $mystring = fgets($archivo);
    $findme = 'value=';
    $posinicio = strpos($mystring, $findme);
    if $posinicio <> false {
    $mystring2=substr($mystring,$posinicio);
    $findme2 = '><label>';
    $posfin = strpos($mystring2, $findme2);
    $elarray[$aa+]=substr($mystring2,1, $posfin-1);
    }
    }
    fclose($archivo);

    y ahora en el array tendras solo los emails

    revisa la sintaxis que lo hago todo de cabeza y a ojo de buen cubero !!!!
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com