[RESOLU] Affichage smileys : Accents et parenthèse avec htmlentities

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Affichage smileys : Accents et parenthèse avec htmlentities

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par nico44530 » 02 juin 2014, 17:36

Merci encore, ça fonctionne :)

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par Elie » 02 juin 2014, 16:35

http://www.php.net/manual/fr/function.h ... lchars.php

Ca n'encode pas les accents apparemment ?

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par nico44530 » 02 juin 2014, 16:05

C'est trop compliqué
Je stocke en htmlentities parce que sinon quand je post par exemple : "<a href="lien.php">Lien</a>"
Le lien va afficher "Lien" et être cliquable au lieu d'afficher "<a href="lien.php">Lien</a>"

J'ai pas compris sur les espaces avant et après le smiley ?

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par Elie » 02 juin 2014, 09:15

Pourquoi tu stockes dans ta base de données en htmlentities ?
Et oui, ne remplacer que [ :) ] avec un espace avant et apres le smiley, cela pourrait être une autre solution.

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par nico44530 » 01 juin 2014, 22:09

Non, j'ai 80 smileys, je vais pas tous les mettre ^^
Le fait de mettre une espace avant et après ne change rien au bug :?

Re: Affichage smileys : Accents et parenthèse avec htmlentit

par Elie » 01 juin 2014, 21:48

Tu n'as qu'une seule image de smiley ?
Le fait de dire "Espace avant / Espace après" est trop hasardeux pour toi tu penses ?

Affichage smileys : Accents et parenthèse avec htmlentities

par nico44530 » 01 juin 2014, 21:33

Bonjour,

Avant l'énoncé du problème je précise, dans ma base de donnée le texte est de format brut, les accents, "é" "à" par exemple, sont remplacés par &eacute; &agrave; etc...
J'utilise htmlentities pour convertir les caractères spéciaux.
Et l'encodage latin1_general_ci pour l'affichage en caractères normaux.
Donc, j'ai une fonction d'affichage de smileys qui utilise preg_replace pour remplacer:

Code : Tout sélectionner

:-) ou :)
en smiley.

Le problème c'est que si je post : "(Testé)"
Dans ma base de donnée, l'affichage en caractères spéciaux : "(Test&eacute;)" et en affichage normal (Testé ;).

Voici ma fonction smiley :
function smiley($texte){
     $texte = preg_replace('#;-\)|;\)|:clinoeil:#i',' <i class="smiley" id="Clinoeil"></i> ', $texte);
}
Je ne peux pas changer l'encodage à l'insertion de ma base de donnée, sinon il y aura un bug un peu compliqué à expliquer :?
Merci d'avance