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 :

regexp + fichier html => pourquoi ça match pas?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut regexp + fichier html => pourquoi ça match pas?
    salut

    Voilà je cherche à matcher tous les liens dans mon bookmarks ff. Ils sont de cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <DT><A HREF="http://...
    Donc j'ai tout simplement voulu faire ceci pour commencer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ligne = htmlentities(fgets($fp, 1024));
    if(preg_match('`<A HREF="http://`',$ligne)) 
    {
    echo 'ok<br />';
    ...
    }
    	  {
    mais ca marche pas. J'ai essayé d'échapper certains caractères, comme le double quote, mais idem.
    Donc en supprimant les caractères 1 par 1 j'en arrive à cette expression, uniquement, qui peut me renvoyer true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ligne = htmlentities(fgets($fp, 1024));
    if(preg_match('`A HREF`',$ligne)) 
    {
    echo 'ok<br />';
    ...
    }
    Dès que j'ajoute un chevron ou le signe = ça match plus.
    J'aimerais comprendre pourquoi.

    merci

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Il faut utiliser un preg_match_all

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    D'après toi, qu'arrive-t-il aux chevrons une fois qu'on les massacre par htmlentities ?

    Deux choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ligne = fgets($fp, 1024);
    if(preg_match('#<A HREF="http://#',$ligne)) {
        echo 'ok<br />';
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ligne = htmlentities(fgets($fp, 1024));
    if(preg_match('#&lt;A HREF=&quote;http://#',$ligne)) {
        echo 'ok<br />';
    }
    A adapter...

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Essai de mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'ok<br/>'; // sans espace dans le tag


    Essai de mettre "=" en minuscule ?

    edit: précédé par jml94

  5. #5
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Tout simplement :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    preg_match_all('/<DT><A[^>]+HREF=\"(http|https):\/\/([^\"]+)/i', $html, $lines, PREG_PATTERN_ORDER);
    foreach ($lines[2] as $data) {
    echo $data.'<br />';
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par goodpz
    Essai de mettre:
    Code :
    echo 'ok<br/>'; // sans espace dans le tag
    Essai de mettre "=" en minuscule ?
    et ouais la norme c'est la norme...



    Bref j'utiliserai cette forme pour le moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#<A HREF="http://#',$ligne)
    j'étais persuadé d'avoir testé pourtant...



    Citation Envoyé par jml94
    D'après toi, qu'arrive-t-il aux chevrons une fois qu'on les massacre par htmlentities ?
    là j'avoue que je comprends pas vraiment puisque le résulat que je recois après un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ligne = htmlentities(fgets($fp, 1024));
    echo $ligne;
    est bien de la forme "<DT><A HREF="http://..." donc je le disais que ca devait forcément matcher. Comment je pourrais observer et comment j'aurais pu savoir par rapport aux chevrons?

    merci à tous. Interessant pour le preg_match_all, ca parait un poil plus lourd mais j'en aurais peut etre l'utilité si j'avance.

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

Discussions similaires

  1. Pas d'aperçu d'un fichier html a partir d'eclipse
    Par donnadieujulien dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 23/01/2009, 16h49
  2. [HTML] Fichier SWF fonctionne sous IE mais pas sous FIREFOX
    Par °°° Zen-Spirit °°° dans le forum Balisage (X)HTML et validation W3C
    Réponses: 16
    Dernier message: 02/05/2008, 19h23
  3. Réponses: 1
    Dernier message: 07/09/2007, 12h15
  4. [REGEX] Pourquoi ça matche pas ?
    Par Hoegaarden dans le forum Langage
    Réponses: 5
    Dernier message: 02/01/2006, 18h47
  5. [Regex] Pourquoi ca matche pas ?
    Par Hoegaarden dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 05/09/2005, 15h19

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