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 :

[regex][preg_match_all]ma regex marche pas [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut [regex][preg_match_all]ma regex marche pas
    bonjours, je vous montre le string a chercher a l'aide d'une regex :

    <a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>
    le regex que j'ai ecrit au debut etait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pattern2 = '<a *href="(.*) *mce_href="(.*) *">.*<\/a>';
    if (preg_match_all($pattern2, $match, $tabLiens) ) {
    ...
    }
    seulement, ca me note une erreure :
    Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '.' in /www/skiset/www/backOffice/traduction/pagesstatiques.php5 on line 159
    j'ai donc essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern2 = '/<a *href="(.*) *mce_href="(.*) *">.*<\/a>/s';
    j'ai plus l'erreure mais, ce ne em trouve pas le string,
    cette solution ne marche pas non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern2 = '/<a *mce_href="([[:alnum:][:punct:][:graph:]]*)" *href="([[:alnum:][:punct:][:graph:]]*)" *>[[:alnum:]<>,:;]*<\/a>/s';
    ca ne marche pas non plus...

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $tab = array();
    preg_match_all( 
        '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/', 
        '<a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>', 
        $tab);
    print_r($tab);
    ?>
    me donne

    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
    Array
    (
        [0] => Array
            (
                [0] => <a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>
            )
     
        [1] => Array
            (
                [0] => http://blalba.com/repertoire/toto-est-bete.php5
            )
     
        [2] => Array
            (
                [0] => repertoire/toto-est-bete.php5
            )
     
    )
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  3. #3
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    merci

  4. #4
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    la regex fonctionne... sauf en cas de non retours a la ligne il faudrait la rendre non gourmande, mais, je ne connait pas bien la syntaxe que tu as proposé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/';
    je suis en train d'eesayer differentes syntaxes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/U';
    a l'ai de bien fonctionner, je poste juste pour etre sur de ne pas me fourvoyer dnas ma solution

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    sauf en cas de non retours a la ligne
    Je peux avoir un exemple stp?
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  6. #6
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <li><a href="http:///paiement.html" mce_href="paiement.html">Modes de paiement</a></li>
    <li><a href="http:///engagement.html" mce_href="engagement.html">L'engagement XXX</a></li> <li class="actif"><a href="http:///remises-tarifaires.html" mce_href="remises-tarifaires.html">Descriptif des remises</a></li>
    <li><a href="http:///cgv.html" mce_href="cgv.html">Les conditions générales de ventes</a> </li>
    la partie en rouge etait prise avec son predesceseur en vert.

    en gros, pour la premiere parenthese, le contenu capturé etait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http:///engagement.html" mce_href="engagement.html">L'engagement XXX</a></li> <li class="actif"><a href="http:///remises-tarifaires.html
    et pour la seconde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    remises-tarifaires.html
    l'expression reguliere etait donc gourmande, avec comme limite, le retours a la ligne

  7. #7
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    pb resolut en faisant maintes str_replace et trim... puis en remettant mes
    \"

  8. #8
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    je me retrouve avec de nouveaux pbs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <a mce_href="\"comment-louer/louer-online.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/louer-online.php5\""> En ligne </a>
    <ul>
    <li>
    <a mce_href="\"paiement.html\"" href="\"http://XXX.dev.YYY.com/paiement.html\"">Modes de paiement</a>
    </li>
    <li>
    <a mce_href="\"comment-louer/engagement-skiset.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/engagement-XXX.php5\"">L\'engagement Skiset</a>
    </li>
    le texte en rouge n'est pas pris par le pattern :'(

    il est dans cette structure HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ul id="\"ss-nav\"">
    <li>
    <a mce_href="\"comment-louer/louer-online.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/louer-online.php5\""> En ligne </a>
    <ul>
    <li>
    </li>
    ...
    </ul>
    </li>
    ...
    </ul>
    j'arrive pas a comrpendre pourquoi il n'est pas capturé... :'(

    je suis desolé d'etre aussi chiant, mais, j'y arrive vraiement pas...

  9. #9
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    apparement, le "." du motif ne fonctionne pas totalement
    =>il a l'air de ne pas capturer les "-"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/<a\s+href=(.*)\s+mce_href=(.*)\s*>.*<\/a>/U';
    j'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/<a\s+href=([.-]*)\s+mce_href=([-.]*)\s*>.*<\/a>/U';
    mais la syntaxe n'est pas correcte...

    j'ai aussi essayé avec des laternatives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/<a\s+href=(#.|-#*)\s+mce_href=(#.|-#*)\s*>.*<\/a>/U';
    ca ne fonctionne pas non plus :'(

    edit : erreure, le pb ne vient aps des "-", mais, bel et bien de portions de ma chaine qui ne sont pas capturées, alors qu'elles n'ont aucune difference avec le reste...

Discussions similaires

  1. RegEx multiline ne marche pas.
    Par eric.bryan dans le forum C#
    Réponses: 0
    Dernier message: 28/08/2013, 18h16
  2. regex : capture d'accents - \p{L} ne marche pas
    Par Phonatacid dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/04/2009, 10h38
  3. [RegEx] regex simple qui ne marche pas (encore)
    Par denisvignes dans le forum Langage
    Réponses: 5
    Dernier message: 19/09/2008, 15h04
  4. [RegEx] Regex preg_match_all()
    Par juninho269 dans le forum Langage
    Réponses: 5
    Dernier message: 07/06/2008, 22h17

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