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
9
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