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 :

Utilisation des regex


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Utilisation des regex
    Bonjour,

    Je voulais vous demander une aide précieuse pour l'utilisation de regex en PHP

    voici le pattern sur lequel je travail:
    $pattern = "([a-ZA-z0-9])\${{$subject}}([a-ZA-z0-9])";

    et voici les 2 type de chaines dans lesquels je recherche grace à ce pattern :

    aname-${version}.zip
    aname-${version}-aname.zip

    J'obtiens l'erreur suivante :
    preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier '$'

    Je conclue que mon pattern est faux

    Quelqu'un pourrait me venir en aide afin que le pattern utilisé fonctionne avec le type de chaine que je souaite trouver

    Merci d'avance

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Un pattern doit être encadré d'un caractère, par exemple /.

    http://fr.php.net/preg_match

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut merci..
    Merci, mais les example peuvent aussi marcher sans ce caractere

    De plus, pour tester, j'ai quand meme mis le caracter '/', mais l'erreur devient:
    Unknown modifier '/'

    Any other suggestions ?

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Citation Envoyé par djus29 Voir le message
    Merci, mais les example peuvent aussi marcher sans ce caractere
    Non. Il en faut un, pas forcément / mais il en faut un.

    De plus, pour tester, j'ai quand meme mis le caracter '/', mais l'erreur devient:
    Unknown modifier '/'

    Any other suggestions ?
    Fais voir ton masque.

    Au passage, t'es censé échapper les { et les } il me semble, car ce sont des caractères spéciaux.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Oui effectivement il en faut 1: si je mets les parentheses, ca passe

    pour ce qui est des accolades, elles sont échappés par la double accolade

    pattern: ([a-zA-Z0-9]-\${{$subject}}-[A-zA-Z0-9])
    masque généré: ([a-zA-Z0-9]-${version}-[A-zA-Z0-9])

    je veux trouver ceci :

    aname-${version}.zip
    aname-${version}-aname.zip

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Une double accolade n'échappe pas une accolade. Il faut échapper avec un backslash.

    Et c'est une très mauvaise idée d'englober sa regexp par des parenthèses, et c'est ça qui te fait planter la tienne (parce que tu en as dans l'expression même).

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Tres bien, en prenant compte de tes conseils, voici:

    pattern: "/[a-zA-Z0-9]-\$\{$subject\}-[A-zA-Z0-9]/"
    masque : "/[a-zA-Z0-9]-$\{version\}-[A-zA-Z0-9]/"

    j'ai plus d'erreur, mais néanmoins le type de chaine que je recherche n'est pas trouvée

    Il doit manquer quelquechose dans la définition du pattern ??

  8. #8
    Membre régulier Avatar de arthak
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 99
    Points
    99
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "([a-zA-Z0-9]*)-\$\{".$version."\}([a-zA-Z0-9\.]*)";


    L'étoile pour la possibilité de répétition du caractère, et j'ai rajouté le \. pour le "." du zip. sinon sans le zip ben c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "([a-zA-Z0-9]*)-\$\{".$version."\}([a-zA-Z0-9]*)";

Discussions similaires

  1. Probleme d'utilisation des Regex
    Par krisox dans le forum C#
    Réponses: 6
    Dernier message: 03/05/2010, 20h30
  2. Utilisation des Regex avec Boost
    Par Inarius dans le forum Boost
    Réponses: 1
    Dernier message: 20/01/2010, 14h47
  3. [tcprewrite] utilisation des regex
    Par dahtah dans le forum Réseau
    Réponses: 0
    Dernier message: 01/10/2008, 14h12

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