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 :

Comment faire une expression régulière avec des <ESC>, <CR> ou <LF> ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment faire une expression régulière avec des <ESC>, <CR> ou <LF> ?
    Bonjour,

    Je voudrais faire une expression régulière en PHP qui contient des caractères spéciaux comme <ESC>, <CR> ou <LF>.

    Voici ma data :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ESC>%-12345X@PJL ENTER LANGUAGE = PCLXL<CR><LF>
    Où ce qu'il y a avant le @PJL est facultatif, les espaces avant et après le = sont facultatif aussi et le <CR> également.

    J'ai commencé à faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @PJL ENTER LANGUAGE ?= ?[A-Z0-9]<CR>?<LF>$
    Pouvez-vous m'aider à la corriger, c'est-à-dire transformer les <CR> et <LF> par le code qui va bien ?

    Merci,
    ZiP

  2. #2
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Je ne suis pas certain d'avoir bien compris, mais <CR> est représenté par \r et <LF> par \n. Tu peux utiliser la classe \s (caractères blancs, donc inclue aussi les espaces par exemple).

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
        $sub = Chr(27).'%-12345X@PJL ENTER LANGUAGE = PCLXL'.Chr(13).Chr(10).'@PJL COMMENT'.Chr(10);
        $pat = '/@PJL ENTER LANGUAGE ?= ?([A-Z0-9]+)[\r]?\n/';
        if( preg_match($pat, $sub, $matches, PREG_OFFSET_CAPTURE) > 0 )
        {
            echo 'VRAI<br/>';
            print_r($matches);
        }
        else
        {
            echo 'FAUX';
        }
    ?>
    Il semble marcher !

    Pouvez-vous me dire si mon expression régulière est écrite correctement ?

    Merci,
    ZiP

  4. #4
    Membre régulier Avatar de et.rond.et.rond
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 110
    Points : 119
    Points
    119
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $pat = '/@PJL ENTER LANGUAGE ?= ?([A-Z0-9]+)[\r]?\n/'
    les points d'interrogation veulent dire que le caractères précédent est 0 ou 1 fois, c'est bien cela que tu cherches à faire ?
    et les crochets sont utilisés pour indiquer plusieurs caractères donc tu peux remplacer "[\r]?" par "\r?"
    ... petit patapon

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour et.rond.et.rond,

    Effectivement, on peut trouver des espaces ou non entre la commande et la valeur, c'est pourquoi j'ai mis le point d'interrogation.

    Je vais donc remplacer le [\r] par \r car il n'y en aura toujours au maximum un seul ou pas du tout.

    Merci,
    ZiP

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

Discussions similaires

  1. comment faire une expression régulière
    Par karimDevelopper dans le forum Débuter
    Réponses: 2
    Dernier message: 23/06/2009, 17h03
  2. [RegEx] Comment faire une expression régulière ?
    Par bartez63 dans le forum Langage
    Réponses: 9
    Dernier message: 26/07/2007, 17h26
  3. Comment faire une API Win32 avec C++ Builder
    Par Zerocool003 dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2006, 16h13
  4. Réponses: 4
    Dernier message: 07/11/2005, 15h54
  5. Réponses: 10
    Dernier message: 30/06/2004, 13h00

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