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 :

Problème de Regex PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Analyse système
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Problème de Regex PHP
    Bonjour je cherche une expression regulires de l'expression suivante

    elle commence par <?php echo gTrad(" et fini par ");?>
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "#^(<?php echo gTrad\(\"){1}[a-zA-Z0-9]{*}+\"{1}\) (?>\))$#";
    merci de m'aider svp.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Vu qu'il s'agit de parser du code PHP, peut-être que l'utilisation du tokenizer serait plus adapté, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $str = '<?php echo gTrad(" et fini par ");?>';
     
    $arr = token_get_all($str);
     
    print_r($arr);
    Après, tout dépend de ce que tu cherches à en faire par la suite.

    Sinon, via regex, puisque tu recherches pratiquement un chaîne fixe mise à part la chaîne de caractère passée en argument de gTrad(), le plus pratique serait d'encadrer les parties fixes avec \Q et \E ce qui permet aux caractères spéciaux (ici, les parenthèses et les points d'interrogations) de ne pas être interprétés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '~\Q<?php echo gTrad("\E[^"]*\Q");?>\E~';
    Autre méthode, toujours en s'appuyant sur les parties fixes, mais cette fois-ci en utilisant strpos():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $pos1 = strpos($str, '<?php echo gTrad("');
    $pos2 = strpos($str, '");?>', $pos1+18);
     
    $result = substr($str, $pos1, $pos2 + 5);
    $param = substr($str, $pos1 + 18, $pos2 - $pos1 - 18);
     
    print_r($result);
    print_r($param);
    Le point faible de cette dernière méthode est qu'elle suppose qu'une sous-chaîne commençant par <?php echo gTrad(" va forcément s'achever par ");?> ce qui peut produire un résultat complètement faux si ce n'est pas le cas.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2005, 05h28
  2. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  3. [COM] Problème COM et PHP
    Par goldeneagle dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/09/2005, 22h41
  4. [PHP-JS] Problème de variable PHP dans un script JS
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2005, 22h17
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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