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] preg_match_all [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut [RegExp] preg_match_all
    Bonjour,
    J'ai le problème suivant avec une (grosse) regexp qui marche en Perl... mais pas avec preg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern= "/([1-3]?[ ]?[a-zA-Z]{2,22})[ ]?([0-9]{1,3}):([0-9]{1,3})(?:-([0-9]{1,3}))?/";
    Ceci fonctionne pour :
    1 Jean 3:16-18
    1Jean 3:16-18
    Mais pas :
    Jean 3:16-18

    Une idée ?
    Merci !

    edit1: ptit faute

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    bonjour... peut être comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern= "/^([1-3]?[ ]?[a-zA-Z]{2,22})[ ]?([0-9]{1,3}):([0-9]{1,3})(?:-([0-9]{1,3}))?.*$/";

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    En fait la regex marche sans problème, on l'a testée avec perl sous linux seulement en PHP ça joue pas...

    Et pour le ^ et $ c'est pas ce qu'on veut, on fait une recherche au milieu d'un texte...

    Merci quand-même

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Essayez \040 ou \s a la place des [ ] pour les espaces.
    Sinon un peu d'aide ici:

    http://fr3.php.net/manual/fr/referen...ern.syntax.php

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    On essayera, merci.

    Et pour le pavé du manuel j'espère qu'on n'aura pas besoin de s'en servir

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Ceci fonctionne chez moi (PHP 5.0.5 et Apache 2)
    Concentrez vos efforts sur la configuration du serveur peut être ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    $ligne0 = "1 Jean 3:16-18";
    $ligne1 = "1Jean 3:16-18";
    $ligne2 = "Jean 3:16-18";
    $ligne3 = "hg";
     
    $pattern= "/([1-3]?[ ]?[a-zA-Z]{2,22})[ ]?([0-9]{1,3}):([0-9]{1,3})(?:-([0-9]{1,3}))?/"; 
     
    echo preg_match($pattern, $ligne2);
     
    ?>

    Ceci aussi fonctionne chez moi:
    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
     
    <?php
     
    $tab = array();
     
    $ligne0 = "1 Jean 3:16-18";
    $ligne1 = "1Jean 3:16-18";
    $ligne2 = "Jean 3:16-18";
    $ligne3 = "hg";
     
    $blob = $ligne0.'dsf fsd '.$ligne1.'dsgg4d2 d41g2dg121h '.$ligne2.'44d54ggd '.$ligne3;
     
    $pattern= "/([1-3]?[ ]?[a-zA-Z]{2,22})[ ]?([0-9]{1,3}):([0-9]{1,3})(?:-([0-9]{1,3}))?/"; 
     
    echo preg_match_all($pattern, $blob, $tab);
    echo '<br/>';
     
    foreach($tab[0] as $key => $item){
      echo "resultat $key: $item<br/>";
    }
     
    ?>
    Et produit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    3
    resultat 0: 1 Jean 3:16-18
    resultat 1: 1Jean 3:16-18
    resultat 2: Jean 3:16-184
    Le problème pourrait être dû egalement a des caractères intermédiaires...
    j'espère que vous trouverez.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut
    Ok, tout semble fonctionner maintenant.. problème étrange mais résolu, merci !!

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

Discussions similaires

  1. [RegEx] preg_match_all ne reconnait pas ma regexp
    Par senacle dans le forum Langage
    Réponses: 7
    Dernier message: 29/06/2018, 15h54
  2. Réponses: 3
    Dernier message: 31/08/2010, 20h11
  3. [langage] [RegExp] Récupérer une portion de phrase
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2004, 23h01
  4. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 10h29
  5. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 19h05

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