Htmlentities()+strip_tags() et bien plus

Résolu
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005 - 31 janv. 2005 à 02:34
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005 - 2 févr. 2005 à 04:08
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

10 réponses

cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
31 janv. 2005 à 14:18
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
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 janv. 2005 à 13:24
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.
0
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005
31 janv. 2005 à 14:24
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
0
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005
31 janv. 2005 à 15:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 janv. 2005 à 20:49
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)
0
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005
31 janv. 2005 à 21:15
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
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
1 févr. 2005 à 13:15
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
0
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005
1 févr. 2005 à 14:51
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
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
2 févr. 2005 à 03:12
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
0
dorian53 Messages postés 102 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 22 août 2005
2 févr. 2005 à 04:08
C'est bon le probleme est reglé avec un regex de la sorte

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

DoR][aN
0
Rejoignez-nous