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 :

syntaxe de preg_replace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut syntaxe de preg_replace
    je voudrais écrire une fonction avec preg_replace (avant j'utilisais ereg_replace et ça marchait)
    mais je sèche sur la bonne syntaxe :
    voilà la fonction (qui ne marche pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function smiley($smiley, $image)
            {
            global $texte;
            $texte = preg_replace('/$smiley/', ' '.$image.' ', $texte);
            }
    c'est le '/$smiley/' qui est mal écrit mais je ne sais pas comment l'écrire correctement
    merci pour votre aide

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    essaies ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function smiley($smiley, $image){
            global $texte;
            $texte = preg_replace($smiley, $image, $texte);
    }
     
    $smiley = '#regex#';
    smiley($smiley, $image);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut
    ben, ça ne lui plait pas :
    preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in...

    il s'attend à avoir un '/
    et comme derrière j'ai une variable, il ne sait pas la lire si je mets :
    $texte = preg_replace('/$smiley/', $image, $texte);

    la fonction ne fonctionne pas (elle consiste à remplacer par exemple ": (" sans espace par )
    ou bien qn a t-il la bonne fonction qui remplace les signes par les smileys ?

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Si ca marche

    Montres nous le contenu de tes variables $smiley, $regex et $texte stp

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Déjà, il n'y a pas interpolation de la variable (ie remplacement de son nom par sa valeur) dans une chaîne délimitée par des singles quotes ('). L'interpolation n'est réalisée qu'avec des doubles (").

    Sinon, il y a éventuellement un problème qui va se poser : le code du smiley, s'il contient un caractère qui est, en temps normal, un métacaractère ou venait à contenir ce qui sert de délimiteur, au pire la compilation du motif va échouer et au mieux, elle pourrait avoir un effet inattendu. Il faudrait donc s'arranger pour choisir un délimiteur qui est un métacaractère et procéder à l'échappement, via la fonction preg_quote, de ce qui doit l'être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = preg_replace('.' . preg_quote($smiley) . '.', ' '.$image.' ', $texte);
    Ce qui signifierait qu'ici une expression régulière n'est pas nécessaire (str_replace suffirait par exemple).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut merci
    merci julp : ça marche, plus d'erreur et les smileys apparaissent.

    je réponds tardivement car j'ai été un peu absent et occupé.

Discussions similaires

  1. [PHP 5.4] syntaxe fonction preg_replace
    Par hindioriental dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2013, 10h33
  2. Fonction preg_replace() - compréhension syntaxe
    Par Marmotton76 dans le forum Langage
    Réponses: 5
    Dernier message: 04/10/2011, 09h39
  3. [RegEx] preg_replace et syntaxe des expressions régulières
    Par MmoulinexX dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2006, 23h57
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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