Probleme de htmlentities et preg_replace
milout
-
milout Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
milout Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors j'ai un petit probleme que je n'arrive pas a résoudre . Pour simplifier j'inscris dans une db les messages de visiteurs et je racourci leur lien en balise [url] un peu comme sur certains forum.
Donc la tout marche bien, le probleme c'est que je dois faire un htmlentities pour pas me faire sacager mon site (je le fais deja tres bien moi meme ! xO ) et donc ca me fou en l'air mon preg_replace.
Donc je me suis dis logiquement je fais (bon aucune idée du regex a faire apres le htmlentities) :
htmlentities ---> preg_replace ---> ? inscription db
Est-il possible de dire a htmlentities de laisser passer les liens ? bref aucune idée je suis un peu perdu sur ce coup :O
Si une personne pouvait me venir en aide, merci d'avance !
alors j'ai un petit probleme que je n'arrive pas a résoudre . Pour simplifier j'inscris dans une db les messages de visiteurs et je racourci leur lien en balise [url] un peu comme sur certains forum.
$txt = preg_replace('#https?://[a-z0-9._/=&\?-]+#i', '<a href="$0">[lien]</a>', $txt]);
Donc la tout marche bien, le probleme c'est que je dois faire un htmlentities pour pas me faire sacager mon site (je le fais deja tres bien moi meme ! xO ) et donc ca me fou en l'air mon preg_replace.
Donc je me suis dis logiquement je fais (bon aucune idée du regex a faire apres le htmlentities) :
htmlentities ---> preg_replace ---> ? inscription db
Est-il possible de dire a htmlentities de laisser passer les liens ? bref aucune idée je suis un peu perdu sur ce coup :O
Si une personne pouvait me venir en aide, merci d'avance !
5 réponses
Hello
htmlentities - Convertit tous les caractères éligibles en entités HTML
ce n'est peutre pas approrié pour ce qu tu veux faire.
tu devrais regarder
strip_tags — Enlève les balises HTML et PHP.
htmlspecialchars — Converti tous les caractères spéciaux en équivalent HTML.
Sinon la fonction htmlentities fait le bon traitement. si tu veux inverser, faut bricoler
htmlentities - Convertit tous les caractères éligibles en entités HTML
ce n'est peutre pas approrié pour ce qu tu veux faire.
tu devrais regarder
strip_tags — Enlève les balises HTML et PHP.
htmlspecialchars — Converti tous les caractères spéciaux en équivalent HTML.
Sinon la fonction htmlentities fait le bon traitement. si tu veux inverser, faut bricoler
<quote>
Sinon la fonction htmlentities fait le bon traitement. si tu veux inverser, faut bricoler</quote>
c'est bien ce que je veux faire, inverser le htmlentities mais seulement pour ma balise de lien (sinon ca servirait a rien :o) et le probleme c'est que je suis pas tres bricoleur !
Si une personne a une piste pour démarrer .
merci
Sinon la fonction htmlentities fait le bon traitement. si tu veux inverser, faut bricoler</quote>
c'est bien ce que je veux faire, inverser le htmlentities mais seulement pour ma balise de lien (sinon ca servirait a rien :o) et le probleme c'est que je suis pas tres bricoleur !
Si une personne a une piste pour démarrer .
merci
si ce sont des scripts malveillants que tu veux te protéger, fait un str_replace des mots clés de SQL (insert, delete, update...) par "".
Et récupère seulement ton url sans la filtrer. Parce que là j'avoue ne pas bien comprendre pourquoi tu veux faire ça
Et récupère seulement ton url sans la filtrer. Parce que là j'avoue ne pas bien comprendre pourquoi tu veux faire ça
Oh je suis bête j'ai oublié de dire que les messages sont affichés (c'est une shoutbox) donc c'est pour éviter les codes js surtout.
je suis arrivé à recupérer un code pour une balise simple <a> , me reste plus qu'a trouver finalement le bon regex pour la balise <a href="blabla">[url]</a> .
Voila le debut du code pour ceux que ca interesse :
$txt = htmlentities(txt);
$in = '(<(/?(?:a)\b.*?)>)ie'; // me reste plus qu'a adapter le regex a ma balise
$txt = preg_replace($in, "'<'.html_entity_decode('$1').'>'",$txt);
Du coup sur cet exemple la balise <a> marche bien et toutes les autres sont modifier par htmlentities et donc sont affichées plutot qu'éxéxuté dans ma shoutbox (a 2fr50 on est d'accord !).
Voila jespere que je fais pas n'importe quoi oo
je suis arrivé à recupérer un code pour une balise simple <a> , me reste plus qu'a trouver finalement le bon regex pour la balise <a href="blabla">[url]</a> .
Voila le debut du code pour ceux que ca interesse :
$txt = htmlentities(txt);
$in = '(<(/?(?:a)\b.*?)>)ie'; // me reste plus qu'a adapter le regex a ma balise
$txt = preg_replace($in, "'<'.html_entity_decode('$1').'>'",$txt);
Du coup sur cet exemple la balise <a> marche bien et toutes les autres sont modifier par htmlentities et donc sont affichées plutot qu'éxéxuté dans ma shoutbox (a 2fr50 on est d'accord !).
Voila jespere que je fais pas n'importe quoi oo
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question