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 :

Où est ce que ça plante ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut Où est ce que ça plante ?
    Bonsoir,

    Un petit coup de main s'impose car je sèche.
    Je souhaiterai remplacer dans une chaine du genre : abc\*ghik***\*aa
    toutes les étoiles qui ne sont pas précédées par \ (antislash) par un %.

    Ce que cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = '#(?<!\\)\*#';
    $subject = 'abc\*ghik***\*aa';
    $resolu = preg_replace($pattern, '%', $subject);
    Le PHP me renvoie NULL alors que lorsque je fais exactement le même essai sur ce site http://regex.larsolavtorvik.com/ ça roule impec.

    D'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = '#[^\\\]\*#';
    $subject = 'abc\*ghik***\*aa';
    $resolu = preg_replace($pattern, '%', $subject);
    pas besoin de passer par les lookaround ...
    mais surout il faut echapper le \ une fois pour la reg et une seconde fois pour php
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Yep mille mercis.
    Je débute avec les regex et ça a tendance à devenir vite chaud bouillant :-)

    J'ai essayé avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '#[^\\\]\*#';
    Mais le résultat est incorrect : il ne me remplace que 2 étoiles au lieu de 3.
    A vrai dire dans l'ensemble des essais que j'avais fait, il était au milieu.

    Pour ce texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = "abc\*ghik***\*aa";
    J'attend d'avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = "abc\*ghik%%%\*aa";
    Or ton pattern ne me renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = abc\*ghi%%\*aa;
    J'ai peut être fait une boulette quelque part aussi.

    J'ai corrigé mon pattern avec ceci et ça gaze :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '#(?<!\\\)\\*#';
    Si tu as une autre approche, je suis preneur
    Merci et meilleurs voeux au fait

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

Discussions similaires

  1. qu'est ce que l'instruction "round"?
    Par isa_21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2003, 10h37
  2. Qu'est ce que c'est : Le GateA20 ?
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 24/02/2003, 15h09
  3. Qu'est ce que le cache ?
    Par irrou dans le forum Assembleur
    Réponses: 4
    Dernier message: 24/11/2002, 23h28
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. Réponses: 3
    Dernier message: 19/07/2002, 15h01

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