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 :

recherche de lien avec ereg et écriture dans un fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 97
    Points : 49
    Points
    49
    Par défaut recherche de lien avec ereg et écriture dans un fichier
    bonjour,
    ce que je cherche à faire est le suivant.
    Je parcoure un fichier html à la recherche de lien
    [code]
    while (! feof($geoLecture)) {

    $morceau = fgets($geoLecture, 4096);
    fwrite ($geoEcriture, $morceau);
    ereg("<a[^>]+>", $morceau, $lien);
    [code]
    Les liens sont trouvés avec la fonction ereg qui utilise une expression regulière, et stocke le resultat dans le tableau $lien.
    Ensuite, je parcoure $lien et stocke le resultat dans un fichier :
    &#91;code&#93;
    for ($nb=0; $lien[$nb] != false; $nb= $nb+1) {

    fwrite($geoEcritureLien, $lien[$nb]);
    fwrite($geoEcritureLien, "\n");

    &#91;/code&#93;

    Le problème est que j'ai l'impression que $lien qui devrait s'écraser lors de chaque passage ne se réinitialise pas. Mon fichier texte résultat est incohérent (lignes semblables).
    Et en initialisant avec $lien=array à l'interieur de la boucle de tel sorte que le tableau se reinitialise à chaque passage, les résultats sont encore plus incompréhensibles.

    Après maintes verifications, je sais que le problème viens du tableau et vous prie de m'aider.


    Merci d'avance

    Sempire

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,

    pour ton probleme d ecriture, ca vien surement de ton fopen, choisi bien ton mode en evitant append.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 97
    Points : 49
    Points
    49
    Par défaut
    merci.
    le problème réside dans le fait que ereg me retourne un tableau que je n'arrive pas à consulter. rien à voir avec l'ecriture parce que ca ne marche meme pas avec un simple echo.
    lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	while (! feof($geoLecture)) {
     
    		$morceau .= fgets($geoLecture, 4096);
     
     
    	}
    recherche avec ereg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ereg("<a[^>]+>", $morceau, $lien);
    parcour du tableau resultat ($lien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ($nb=0; $lien[$nb] != false; $nb= $nb+1) {
     fwrite($geoEcritureLien, $lien[nb]);
     
    }

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ereg("(<a[^>]+>)", $morceau, $lien);
    et ensuite fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "<pre>";
    var_dump($lien);
    echo "</pre>";
    pour vérifier ton tableau
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 97
    Points : 49
    Points
    49
    Par défaut
    voila ce que ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <pre>array(2) {
      [0]=>
      string(20) "<a href="index.htm">"
      [1]=>
      string(20) "<a href="index.htm">"
    }
    </pre>
    ce qui ne correspond pas aux resultats que je devrai obtenir.
    la page contient une centaine de lien.

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    utilises plutot preg grep pour ce que tu veux faire alors

    EDIT
    ouais enfin ca va t obliger a transformer ta achaine en tableau
    essayes ereg en mettant les () et * :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ereg("(<a[^>]+>)*", $morceau, $lien);
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 97
    Points : 49
    Points
    49
    Par défaut
    pourquoi ? le deuxieme argument de preg_grep doit etre un tableau et non une chaine de caractère comme dans mon cas.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    j ai édité mon post depuis
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    function dump($mavar){
    	echo "<pre>";
    	var_dump($mavar);
    	echo "</pre>";
    }
     
    $morceau = '<html><body><a href="index.htm">aze</a><br /><a href="indexyrt.htm">azeyui</a>blabla <a href="indexert.htm">azefdg</a><a href="indexdfg.htm">azfge</a></body></html>';
     
    preg_match_all("/<a[^>]+>[^<]+<\/a>/",$morceau,$liens);
    dump($liens);
     
    ?>
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/11/2009, 11h35
  2. problème avec écriture dans un fichier
    Par haraelendil dans le forum Débuter
    Réponses: 1
    Dernier message: 08/09/2008, 09h36
  3. Réponses: 11
    Dernier message: 18/07/2007, 15h20
  4. Problème avec un ansistring - écriture dans Word
    Par scorpion37 dans le forum C++Builder
    Réponses: 11
    Dernier message: 02/05/2006, 15h09
  5. Pb lien avec image et texte dans un li
    Par lalouve dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/03/2006, 01h33

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