IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de lecture .csv


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 40
    Par défaut Problème de lecture .csv
    Bonjour,

    je n'arrive pas a comparer les emails de mon fichier avec mon tableaux de domaine (voir ci dessous)

    par contre si je rentre ex : soryo@hotmail.fr en parametre dans ma fonction
    celle ci va bien m'afficher @hotmail.fr
    pourquoi ma fonction ne lit-elle pas mon fichier ?
    pouvez vous m'aider svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php
     
    function check_domain($amail){
    	$domain[] = '@hotmail.fr';
    	$domain[] = '@aliceadsl.fr';
    	$domain[] = '@gmail.com';
    	$domain[] = '@wanadoo.fr';
    	$domain[] = '@orange.fr';
    	$domain[] = '@neuf.fr';
    	$domain[] = '@free.fr';
    	$domain[] = '@laposte.net';
    	$domain[] = '@operationnelle.com';
    	$domain[] = '@msn.com';
    	$domain[] = '@paris.fr';
    	$domain[] = '@yahoo.fr';
    	$domain[] = '@yahoo.com';
    	$domain[] = '@dbmail.com';
    	$domain[] = '@live.fr';
    	$domain[] = '@live.com';
    	$domain[] = '@sfr.fr';
    	$domain[] = '@aol.fr';
    	$domain[] = '@caramail.fr';
    	$domain[] = '@voila.fr';
    	$domain[] = '@ifrance.com';
    	$domain[] = '@numericable.fr';
    	$domain[] = '@numericable.com';
    	$domain[] = '@bbox.fr';
    	$domain[] = '@alicemail.fr';
    	$domain[] = '@club-internet.fr';
    	$domain[] = '@info-paca.fr';
    	$domain[] = '@tele2.fr';
    	$domain[] = '@fnac.net';
    	$domain[] = '@lemonde.fr';
    	$domain[] = '@libertysurf.fr';
    	$domain[] = '@lenotre.com';
    	$domain[] = '@noos.fr';
    	$domain[] = '@freesbee.fr';
    	$domain[] = '@imode.fr';
    	$domain[] = '@imode.net';
    	$domain[] = '@nomade.fr';
    	$domain[] = '@tiscali.fr';
    	$domain[] = '@tiscali.it';
    	$domain[] = '@m6net.fr';
    	$domain[] = '@europarl.fr';
    	$domain[] = '@europarl.net';
    	$domain[] = '@worldonline.fr';
    	$domain[] = '@parti-socialist.fr';
    	$domain[] = '@bnpparibas.fr';
    	$domain[] = '@bnpparibas.com';
    	$domain[] = '@ford.fr';
    	$domain[] = '@ford.com';
    	$domain[] = '@force-ouvriere.fr';
    	$domain[] = '@lycos.fr';
    	$domain[] = '@lycos.com';
    	$domain[] = '@lycos.mail';
    	$domain[] = '@online.net';
    	$domain[] = '@cegetel.net';
    	$domain[] = '@cegetel.fr';
    	$domain[] = '@avocatparis.org';
    	$domain[] = '@amecspie.com';
    	$domain[] = '@agriculture.gouv.fr';
    	$domain[] = '@aber.ac.uk';
    	$domain[] = '@aiic.net';
    	$domain[] = '@ac-caen.fr';
    	$domain[] = '@almacg.fr';
    	$domain[] = '@almacg.com';
    	$domain[] = '@awcgroup.com';
    	$domain[] = '@awcgroup.fr';
    	$domain[] = '@arcelormittal.com';
    	$domain[] = '@atlv.net';
    	$domain[] = '@atlv.fr';
    	$domain[] = '@ac-bordeaux.fr';
    	$domain[] = '@assemblee-nationale.fr';
    	$domain[] = '@annehidalgo.fr';
    	$domain[] = '@accor.com';
    	$domain[] = '@accor.fr';
    	$domain[] = '@ac-versaille.fr';
    	$domain[] = '@amco.fr';
    	$domain[] = '@astengroup.com';
    	$domain[] = '@adh-presse.com';
    	$domain[] = '@africa24tv,com';
    	$domain[] = '@alternatives-economiques.fr';
    	$domain[] = '@autun.fr';
    	$domain[] = '@alicepro.fr';
    	$domain[] = '@akeonet.fr';
    	$domain[] = '@akeonet.com';
    	$domain[] = '@apc-univ-paris7.fr';
    	$domain[] = '@amg-informatique.com';
     
    	foreach ($amail as $omail){
    		foreach ($domain as $mycase){
    			$add= strstr($omail, '@'); //add = @exemple.com quand omail = alo@exemple.com
    			if (strnatcasecmp($add, $mycase) == 0){ //compare la parti @exemple.com de l'email rentre en parametre et ma tab de domaine
    				echo $add . '<br />';					//afficher cet email;
    			}
    		}
    	}
    }
     
    $file_name = "./bounce.2011-11-07.csv"; // fichier de retour d'erreur d'envoi de mail
     
    if (file_exists($file_name)){
    $file = fopen($file_name, "r"); //open du fichier .csv
    $data = fread($file, filesize($file_name)); //read du .csv
    $data = preg_replace("(\r\n|\n|\r)",'retour_ligne',$data); //remplace les \r\n par retour_ligne
    $ligne = explode('retour_ligne', $data); //creation d'un tableau grace au delimiteur retour_ligne
    $vligne = array(); //creation d'un tab
    $vligne[] = explode(';', $ligne); //delimiter mon tableau par ;
    	foreach ($ligne as $line){
        $vligne[] = explode(';', $line);
    	}
    check_domain($ligne); // fonction qui check si le domaine existe dans mon tab de domaine 
    }
    ?>

    Merci d'avance !

    Cordialement,

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pas d'explode pour du CSv mais fgetcsv

    ps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $domain[] = '@hotmail.fr';
    	$domain[] = '@aliceadsl.fr';
    	$domain[] = '@gmail.com';
    	$domain[] = '@wanadoo.fr';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $domain = array(
        '@hotmail.fr',
        '@aliceadsl.fr',
        '@gmail.com',
        '@wanadoo.fr'
    );
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fopen + fread + filesize = file_get_contents
    http://fr2.php.net/manual/fr/functio...t-contents.php
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace(\r\n, $file)  = file
    http://fr2.php.net/manual/fr/function.file.php

    ...

    et les foreach pour ta fonction c'est inutile utilise in_array

    y'a des bases a revoir

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 40
    Par défaut
    Je débute ! merci pour ton aide !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 40
    Par défaut
    Il n'affiche que les adresses @alicemail.fr et non les @tiscali.fr alors qu'il y en a dans mon fichier. J'en déduis donc qu'il ne parcourt pas mon tableau.. et n'arrive pas a la comparaison. Pouvez vous m’éclairer ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $domain = array(
    			'@alicemail.fr',
                            '@tiscali.fr'
    );
     
    $file_name = "./bounce.2011-11-09.csv";
    $data = file_get_contents($file_name);
    $file = preg_replace("(\r\n)", $file);
    $ligne = explode($file, $data);
    $vligne = array();
    $vligne[] = explode(';', $ligne);
    	foreach ($ligne as $line){
        $vligne[] = explode(';', $line);
     }
    	foreach ($vligne as $etab){
    		foreach ($domain as $mycase){
    			if (preg_match('#5.4.4#', $etab[3])){
    			$add = strstr($etab[0], '@');
    				if(strcmp($add, $mycase) != 0){
    					echo $etab[0] . ': email' .$add.': match - code :'.$etab[3]. '<br />';
    				}
    				break;
    			}
    		}
    	}
    ?>

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    utilise fgetcsv ...

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 40
    Par défaut
    je ne vois pas la différence entre explode et fgetcsv, explode fonctionne dans mon cas il me sépare bien mon tableau. Crois-tu que mon problème de parcourt viens de l'utilisation d'explode ??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de lecture d'un fichier CSV via DataSet
    Par frearnaud dans le forum C#
    Réponses: 3
    Dernier message: 22/12/2014, 12h33
  2. Problème de lecture d'un fichier .csv.
    Par Azuchi dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 20/12/2010, 11h45
  3. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo