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, preg_replace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut problème de regex, preg_replace
    Bonjour,

    voilà mon petit souci, je veux afficher sur ma page web une variable qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu="truc avant [SCRIPT]<table><tr><td></td></tr></table>[/SCRIPT]truc après
    L'ensemble peut se trouver su plusieurs ligne.
    Je veux que ceux qu'il y a entre [SCRIPT] et [/SCRIPT] s'affiche sur la page internet mais dans l'état actuel, la page html traduit cela comme un tableau.
    Je voudrais donc convertir tous les < entre ces deux balises par &lt; sachant que le contenu peut varier, il peut y avoir un "<" comme 20 "<".
    J'ai codé ça, je pensais que ça fonctionnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern[]="#\[SCRIPT\](.+)\[\/SCRIPT\]#mi";
    $replace[]="<script>htmlentities('$1')</script>";
    echo preg_replace($pattern,$replace,$contenu);
    Il me fait bien afficher : truc avant<script></script>truc après, mais il me convertit pas $1 avec la fonction htmlentities, le contenu est recopié tel quel avec en plus htmlentities qui se situe sur la page juste après le <script>, donc il est pris comme une chaine de caractère. En esayant de décomposer, ça plante.

    Une solution ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise preg_replace_callback() pour modifier le remplacement dans une fonction.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Utilise preg_replace_callback() pour modifier le remplacement dans une fonction.
    Cool merci, ça marche nickel. Je mets le code pour les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo preg_replace_callback("#\[CODE\](.*)\[\/CODE\]#isUm",function($matches){$extrait="<code>".htmlentities($matches[1])."</code>";return $extrait;},$aff_art["contenu"]);
    Voilà marche à la perfection.

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

Discussions similaires

  1. [RegEx] preg_replace problème de regex
    Par splifferwolf dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2011, 16h48
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 14h50
  3. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 15h32
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  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