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 :

Lire le contenu des balises HTML [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut Lire le contenu des balises HTML
    Bonjour,

    J'aimerai autoriser mes utilisateurs à saisir du code HTML, tout en limitant les risques d'exploitation de failles XSS.

    Pour se faire, j'utilise html_special_chars($chaine, ENT_QUOTES, 'UTF-8') sur l'ensemble de la chaîne, puis j'essaie de retrouver les balises autorisées (une liste blanche quoi) pour décoder leurs symboles.

    Mon soucis est que je n'arrive pas à trouver une expression régulière capturant à la fois les balises <p> mais aussi <p class="">, <p style="">, etc.
    En effet, preg_replace('#&lt;p[^&gt;]*&gt;#i', '<p>', $chaine); ne reconnait aucune balise <p>. Je pense que le soucis vient de cette partie là : [^&gt;] où il n'apprécie pas l'usage de l'entité &gt;...

    Quelqu'un saurait-il comment résoudre le soucis?

    Merci d'avance.

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Julp m'a donné la réponse sur le chat, donc je la retranscrits ici au cas où quelqu'un d'autre serait intéressé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('`&lt;p(?:(?!&gt;).)*&gt;(.*)&lt;/p&gt;`i', '<p>$1</p>', $chaine);
    Je ne connaissais pas les assertions négatives (?!&gt;) qui étaient indispensable dans ce cas.

    Pour bien faire les choses, un lien vers un tuto en rapport avec ce concept : http://g-rossolini.developpez.com/tu...yntaxe#LII-8-a


    Une autre solution que j'ai trouvé après était simplement d'ajouter le modificateur "U" (ungreedy) afin que l'expression prenne le
    plus petit motif qui marche au lieu d'aller chercher le plus grand.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('`&lt;p.*&gt;(.*)&lt;/p&gt;`Ui', '<p>$1</p>', $chaine);
    En tous cas merci beaucoup pour la réponse!

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

Discussions similaires

  1. [XSLT] lire le contenu des balises en xml dans un ordre précis
    Par ajax12 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 08/04/2010, 18h47
  2. [Digester] lire des balises html
    Par Jean-Philippe Shields dans le forum Apache
    Réponses: 2
    Dernier message: 04/09/2006, 18h55
  3. Extraire le contenu des balises XML
    Par calimero2611 dans le forum Modules
    Réponses: 7
    Dernier message: 12/06/2006, 15h09
  4. faire passer des balise html d'un XML vers un XLS
    Par shaftJackson dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 26/04/2006, 16h07
  5. [HTML] affichage du contenu des balises 'alt' dans une iframe
    Par etarip dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/08/2005, 14h08

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