Nueva pregunta

Pregunta:

Fecha: 15-08-2018 21:43:07 (En Español)

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

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?.
Etiquetas: CSV - PHP - PHP Avanzado - PHP7 - Pregunta Votos: 0 - Respuestas: 3 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 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" }
      Votos: 2 - Link respuesta
     
  • Fecha: 17-08-2018 03:27:59 Gracias amigo, me ha servido tu ejemplo. Mil gracias.   Votos: 0 - Link respuesta
     
  • Fecha: 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 !!!!
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com