Enlever des balises html dans une textarea

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 628 fois - Téléchargée 18 fois

Contenu du snippet

Ce code permet d'enlever les balises html non désirable que l'on peut mettre dans une textarea.
D'autre part tous code BBCode insérer dedans sera remplacer par un code HTML approprié.

Source / Exemple :


<? 

$text = $_POST['montext'];

// on enlève les codes HTML 

$text = nl2br(htmlentities($text));

// on remet les codes HTML qui correspond aux BBCode insérer dedans

$text = preg_replace('!\[quote\](.+)\/quote\!isU', '<div class="class">$1</div>', $text);
$text = preg_replace("!\[quote\=(.+)\](.+)\[\/quote\]!isU", "<div class="\"class\""><strong>$1 :</strong><br>$2</div>", $text);
$text = preg_replace('!\[b\](.+)\/b\!isU', '<strong>$1</strong>', $text);
$text = preg_replace('!\[i\](.+)\/i\!isU', '<em>$1</em>', $text);
$text = preg_replace('!\[u\](.+)\/u\!isU', '<span style="text-decoration: underline;">$1</span>', $text);
$text = preg_replace('!\[center\](.+)\/center\!isU', '<p tyle="text-align:center;margin:0px;padding:0px;">$1</p>', $text);
$text = preg_replace('!\[right\](.+)\/right\!isU', '<p style="text-align: right; margin: 0px; padding: 0px;">$1</p>', $text);
$text = preg_replace('!\[left\](.+)\/left\!isU', '<p style="text-align: left; margin: 0px; padding: 0px;">$1</p>', $text);
$text = preg_replace('!\[titre\](.+)\/titre\!isU', '<h3>$1</h3>',$text);
$text = preg_replace('!\[email\](.+)\/email\!isU', '<a href="mailto:$1">$1</a>',$text);
$text = preg_replace('!\[img\](.+)\/img\!isU', '<img src="$1" border="0">',$text);
$text = preg_replace('!\[url\](.+)\/url\!isU', '<a href="$1" target="_blank">$1</a>',$text);
 
?>

Conclusion :


J'ai chercher un code plus simple, mais j'ai décider de le faire a ma sauce ce qui veut dire le plus compliquer possible, mdr :p

A voir également

Ajouter un commentaire

Commentaires

Neo_Ryu
Messages postés
21
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
6 juin 2011

Afin d'aider les personnes qui désirerai sécuriser un peu mieux leur textarea par exemple, je recommande cette ligne de code :
nl2br(htmlentities($_POST['description']))

htmlentities va permettre de ne pas interpreter les balises html afind e les laisser telles qu'elle comme du texte ;
nl2br va interpréter le retour de chariot (touche entrée pour passer une ligne en gros) par un
qui sera lui compatible.

Tu peux éventuellement améliorer ta source en éliminant les lettres entre < et > puis appliquer le filtre, enfin a réfléchir ^^
cs_keket
Messages postés
91
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
18 mai 2010

Bonjour, je reviens sur cette source horrible que j'avais pondus. La version v2 devrait voir le jour bientôt car je viens seulement de constater que j'avais oublier cette dernière. Désoler pour le retard. Cordialement
abdelaziz_info
Messages postés
120
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2017

Bonjour à tous :

Sauf ceux qui aiment ce qu’ils font qui attendent avec impatience la résulta de leur travail, ne t’inquiètes pas (coucou747) tu as souvent des très bonnes idées que j’apprécie bien ….
En plus le premier code que j’ai testé en arrivant sur (phpcs) été le tien, et ça fonctionnait parfaitement ; je ne l’ai pas noté mais je vais immédiatement le faire, et je te merci.

Pour ce code en cotés technique et théorique les experts ont dit leurs mots, mais du coté pratique ce code fonctionne et ne déclanche aucune alerte d’erreur sauf les espaces qui remplacent les balises :
Avec ($balise," ",$txt) avec ça ($balise,"",$txt) le texte est plus correcte.

Merci à tous et bon courage.
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
j'ai aucune idee de comment dire ca... il y a plein de fois ou sur le net, je posais une question, et on me disait des trucs genre :
"mais rtfm sale noob"
ou genre
"debrouille toi seul ou avec google"
alors comment dire a un mec qu'il a fait un truc pas terrible et qu'il devrait se documenter ? Si ce n'est : lister les erreurs pour qu'il puisse poser des questions et chercher sur google plus facilement ?

je croyais ma facon de commenter les sources et repondre au forum, plus courtoise et plus utile...

ne faire que lister les erreurs et proposer des ameliorations sans m'impliquer, sans dire ce que j'en pense vraiment, je croyais que c'etait la solution la plus "politiquement correcte" de m'adresser aux auteurs de sources...

mettre un tu peux plait
mettre un tu aurais du, tu dois, tu ne dois pas, ne plait pas...

je ne comprends pas vraiment pourquoi quand je dis que le code ici ne DOIT PAS etre utilise, ca choque, alors que quand qqn dit qu'on ne doit pas diviser par 0 en math, ca ne derange personne...

sur ce, je ne commente pas pour etre aime, sinon, j'ajouterais plein de <3 :) ^^ partout, et personne n'en aurait rien a faire...

par contre, quand je vois une source `debutant`, j'aimerais qu'on me laisse tranquile quand j'essaie de lui expliquer comment il doit coder pour poster ses prochaines en `initie`, voir updater la source vers `initie`, si il la travaille correctement...

c'est pas en crachant a la figure des gens qu'on en obtient quelquechose, j'en suis certain, mais je n'ai jamais(ou rarement) crache a la figure des gens, sur CS, a partir d'une simple source (j'ai fait d'autres erreurs, j'en conviens), j'ai critique le code qu'ils avaient soumis a la critique.... je liste les defauts de la source, pas de l'auteur....

si tu vas voir un skyblog au hazard, tu verras des trucs genre : "wesh T tro bo" ca c'est pas qqch de constructif, ici, les commentaires n'ont pas ce role... quand on poste, c'est pas dans le but de lire :
"super cool, c'est tout ce que je cherchais"
parce-que ce qu'un inconu cherche, on s'en fout quand on poste...
on poste pour partager, certe, mais pas seulement pour partager un code, pour partager une methode, un algo, etc... On poste aussi pour s'ameliorer, et c'est pour ca qu'un commentaire genre "a la ligne 42 t'as une faille de securite" poste sans courtoisie, de facon brute, sera TOUJOURS plus utile que "trop cool comme code !"

alors je pourrais faire comme les admins CS : ajouter "cordialement" a la fin de mes commentaires, mais j'ai aucune envie de m'impliquer dedans... je liste les defauts, si il ameliore, je note, sinon, je quitte, et quand qqn revient plusieurs mois apres, si il dit genre "trop bien" alors que la source est toujours aussi mauvaise, je mets "1/10" pour que personne ne se leure... je mets rarement 1/10 comme ca, des les premiers jours, pour le plaisir de mettre 1/10... Et j'en ai marre de me faire insulter sur CS aussi, donc si je sors un "cordialement", ou autre formules (pompeuses) du genre, ca risque de se retourner contre moi, a un autre moment...

Sur ce, c'est toujours un plaisir de voir que mes critiques sont lues, que mes propositions d'ameliorations servent a quelquechose, et j'attend avec impatience la V2 de ce code (non pas pour l'utiliser, mais pour voir si mes critiques (bien que parfois brutales) sont utiles ou pas)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Utiliser une variable globale, c'est déjà mieux, mais c'est quand meme déconseillé (moin que l'inclusion dans la fonction, jte rassure ;)).
En fait, tout ce que tu veux que ta fonction utilise, fait lui passer en paramètre. Si j'ai rien loupé, ton fichier globales.inc.php ou ta variable globale contient un tableau de balises que tu veux garder c'est ca ? Si oui passe lui en deuxième paramètre un tableau contenant la liste des éléments que tu veux garder et hop ! :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.