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 :

preg_replace : utiliser une fonction dans les paramètres [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut preg_replace : utiliser une fonction dans les paramètres
    Bonjour à tous,

    J'utilise une expression régulière pour remplacer un code bbcode du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    [url=monurl]montexte[/url]
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <a href="monurl" title="Aller sur monurl">montexte</a>
    Voici la fonction que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    //remplacer les [url=][/url]
    $texte = preg_replace('`\[url=(.*?)](.*?)\[/url]`si', '<a href="$1" target="_blank" title="Aller sur $2">$2</a>', $texte);




    Problème: si je place une balise color dans ma balise url, la partie title="" casse tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    [url=monurl][color=#FF0000]montexte[/color][/url]
    ...je me retrouve avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <a href="http://www.google.fr" target="_blank" title="Aller sur <span style="color:#FF0000;">Google</span>"><span style="color:#FF0000;">Essai</span></a>
    et qui affiche ça
    Google">Essai

    J'aimerai donc utiliser la fonction strip_tags pour supprimer l'html de la partie title, comment faire ça svp?

    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
    Tu as au choix :
    - le modifieur 'e' : voir l'exemple 4 ici : http://fr.php.net/manual/fr/function.preg-replace.php ;
    - preg_replace_callback

    Mais ça reste une façon bancale de gérer le bbcode, et tu auras toujours des cas foireux. Il me semble que l'extension BBCode de PHP fait un parsing propre, et c'est donc la solution recommandée si tu peux l'installer.

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci je vais essayer avec l'option e qui a l'air super
    Quand à l'extension BBcode, je peux pas l'installer vu que je suis sur free

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

Discussions similaires

  1. [XL-2007] Insérer une variable dans les paramètre d'un fonction
    Par anolo40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/01/2011, 21h08
  2. [XL-2003] Problème avec utilisation d'une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2009, 10h43
  3. Utiliser une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/05/2009, 09h13
  4. Réponses: 5
    Dernier message: 09/07/2006, 18h14
  5. DAO impossible d'utiliser une fonction dans un requete
    Par exter666 dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/09/2005, 17h15

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