Htmlentities()+strip_tags() et bien plus [Résolu]

Signaler
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005
-
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005
-
Bonjour,





Je suis à la recherche d'une fonction assez complexe qui me permettrait
de traiter une chaine de texte envoyée par un éditeur wysiwyg d'un
textarea.





L'ideal serait d'avoir une fonction qui execute un htmlentities($str,
ENT_QUOTES) sur toute la chaine de texte Sauf sur une série de balises
autorisées et son et son contenu tel que par exemple


apres avoir definit $allowedTags = 'etc....';





Exemple <table une balise ouverte mais texte à convertir...



Le texte en gras a été traité via htmlentities($str, ENT_QUOTES).







Un problème rencontré parmis tant d'autres :



Le strip_tags() supprime tout ce qui suit une balise non fermée.



echo strip_tags('<table Bonjour...')



// Ici rien ne s'affiche







Bref cela me semble bien compliqué, si vous aviez quelques pistes ou encore mieux une fonction existante.





Merci :)




DoR][aN
A voir également:

10 réponses

Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
Tu n'as qu'à faire ton htmlentites en premier et tu utilises
preg_replace et html_entity_decode pour remplacer les champs que tu
autorises en normal.

----------------

eXon
http://www.lookstrike.com
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



hmm...si tu as un html mal forme, a mon avis, ca va etre TRES
difficile...tu ne peux pas prevoir ce qui va se passer, et a ce compte,
difficile de creer une fonction generique.
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

Re,

Il suffirait peut être seulement d'un regex me permettant de selectionner tout ce qui n'est pas dans :

<[balise] *> quelque chose comme ca ereg( ^b|span|div+.*+>$ )

Je ne suis pas sur du ereg mais cette une idée

DoR][aN
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

Salut eXon,

Ton idée est intéressante.

Néanmoins, serais tu m'orienter sur la forme du <TT>pattern pour preg_replace, et comment réaliser le html_entity_decode sur ce résultat.
</TT>
Merci

DoR][aN
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



consulte la fonction strip_tags : http://fr.php.net/manual/fr/function.strip-tags.php



a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

Salut,

Malheureusment, seul cette fonction ne fait pas l'affaire.

Regarde mon 1er post :

Un problème rencontré parmis tant d'autres :
Le strip_tags() supprime tout ce qui suit une balise non fermée.
echo strip_tags('<table Bonjour...')
// Ici rien ne s'affiche

Et ca ne résoud pas mon probleme de htmlentities().

DoR][aN
Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
Voici l'exemple d'un petit script pour autorisé que la balise pour le gras:

<?php

$var = htmlentities('<script language="javascript"></script> allo ');

$var = str_replace('&lt;b&gt;','',$var);

$var = str_replace('&lt;/b&gt;','',$var);

// Affiche allo en gras mais n'execute pas le javascript

echo $var;

?>

----------------

eXon
http://www.lookstrike.com
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

Re,

Oui j'y avait égalemment pensé mais c'est ingérable de cette façon car il y a de mutiple possibilités avec les proprietés et attributs de chaque balise présentes ou pas.

javascript|onclick|ondblclick|onmousedown|onmouseup|onmouseover|
onmousemove|onmouseout|onkeypress|onkeydown|onkeyup
+
les alignements, les bordures, les styles, etc...

Merci tout de même

DoR][aN
Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
Non ce n'est pas possible parce que là dans mon exemple j'autorise
seulement le et le mais tu ne peux pas rajouté
aucun code parce qu'il faut qu'il soit intégrale de même, sinon ça va
l'afficher. Avec le preg_replace par exemple ça peut être dangereux oui.

----------------

eXon
http://www.lookstrike.com
Messages postés
102
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

C'est bon le probleme est reglé avec un regex de la sorte

$in='(&lt;(/?(?:'.$balises.')\b[^"]*?)&gt;)ies';

DoR][aN