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 :

Expression régulière avec preg_match_all


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut Expression régulière avec preg_match_all
    salut,
    il y a un moment j'avais deja posté une question sur les expression régulière. J'avais réussi a avoir ce que je pensais bon, mais je me suis apercu qu'il fallait légèrerement modifier l'expression régulière.Et la c'est le drame, ca ne marche pas alors qu'il devrait retrouver cette expression regulière. je montre :
    voici l'expression du debut qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('/\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
    et le resultat était :
    \trowd [........] {\fs18 REFDOC2\cell VERS2\cell }[........] \cellx9639\row }
    maintenant je veux match avec la meme chose en ajoutatnt } au début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    preg_match_all('/}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
    ou
    preg_match_all('/[}]\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
    ou
    preg_match_all('/\}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
    et la c'est le problème ca ne marcha pas alors que j'ai comme texte :

    [........]\clftsWidth3\clwWidth1134 \cellx9639\row }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr[.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard[........]clwWidth1134 \cellx9639\row }

    et donc moi je veux que ca me retourne : }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr[.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard[........]clwWidth1134 \cellx9639\row }

    alors si quelqu'un peut m'aider se serait cool .

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    L'accolade est un caractère spécial, il faut donc l'échapper :
    <?php

    $string
    = '\clftsWidth3\clwWidth1134 \cellx9639\row }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr&#91;.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard&#91;........]clwWidth1134 \cellx9639\row }';

    if(
    preg_match_all('/\}\\\\trowd(.*)\\\\row }/Usi', $string, $matches, PREG_SET_ORDER)){
    &#160;&#160;&#160;foreach(
    $matches as $match){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    $match&#91;0].'<br /><br />';
    &#160;&#160;&#160;}
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    oui je sais que l'accolade est un carectere speciaux et comme tu peux le voir c'est le 3eme essais que j'ai fais mais sans succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('/\}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
    et la je suis bloquer je comprend pas pourkoi ca ne veux pas

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    je viens d'essayer la solution
    [CITATION]
    if(preg_match_all('/\}\\\\trowd(.*)\\\\row }/Usi', $string, $matches, PREG_SET_ORDER)){
    foreach(
    $matches as $match){
    echo
    $match[0].'<br /><br />';
    }
    }

    [/CITATION]
    et ca me retourne en effet un string qui verifie expr reg mais pas la plus petite je pensais que le su permettait de ne pas se preoccupe des caractere d'espacement et de retourner le plus petit string qui verifie l'expression reg

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Flûte, il reste une accolade non échappée à la fin.
    C'est le modificateur U qui permet de trouver le plus possible de résultats.

    [Edit] Apparemment, puisqu'il n'y a pas d'accolade ouvrante dans la regex, il n'est pas nécessaire d'échapper les 2 accolades fermantes.
    Je viens de tester en copiant 5 fois ta chaîne exemple de test : ça fonctionne à merveille.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    est ce que tu peux me dire si avec la vrai variable a parser tu y arrive parce que chez moi je recupere un truc enorme (en effet il verifie l'expr reg) et pas du tout une petite partie.

    et moi je veux juste recuperer :
    }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5 \trftsWidth1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw45 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6449 \cellx6379\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth2126 \cellx8505\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw45 \cltxlrtb\clftsWidth3\clwWidth1134 \cellx9639\pard\plain \s44\qj \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT1\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC1\cell VERS1\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs22\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 \trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5 \trftsWidth1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw45 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6449 \cellx6379\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth2126 \cellx8505\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw5 \clbrdrb \brdrs\brdrw5 \clbrdrr\brdrs\brdrw45 \cltxlrtb\clftsWidth3\clwWidth1134 \cellx9639\row }

    merci pour ton aide
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je ne comprends absolument pas ce que tu souhaites récupérer.
    De plus, tu ne m'as pas donné le contenu de ta variable $string : c'est pour cela que je l'ai évincée.

    Explique-moi ce que tu souhaites faire ou bien donne-moi un lien vers l'ancien sujet, stp. Là, je pars de quelque chose de très bancale. Il me faut davantage d'infos pour t'aider correctement.

Discussions similaires

  1. [RegEx] [HTML PARSER] expression régulière avec preg_match_all
    Par Exca dans le forum Langage
    Réponses: 13
    Dernier message: 22/10/2011, 11h31
  2. Expression Régulière avec Quote
    Par jon301 dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2006, 22h08
  3. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03
  4. Expression réguliére avec CHECK
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/09/2005, 17h38
  5. Expression régulière avec "|"
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2005, 15h09

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