2008-12-18 12 views
3

J'utilise HTML Purifier dans mon projet PHP et ai de la difficulté à fonctionner avec des entrées utilisateur.Comment faire pour que & nbsp se comporte correctement avec HTML Purifier?

J'ai utilisateurs d'entrer en HTML à l'aide d'un éditeur WYSIWYG (TinyMCE), mais à chaque fois qu'un utilisateur entre dans l'entité HTML   (espace insécable), il est enregistré dans la base de données que ce bizarre caractère étranger (Â).

Cependant, le fait est que lorsque je modifie l'entrée sauvegardée à l'aide de l'éditeur WYSIWYG, elle s'affiche correctement sous la forme  . Il fonctionne également correctement lorsqu'il est affiché, seulement que dans le code source, il apparaît comme un espace réel, mais pas le caractère espace insécable.

De plus, dans la base de données MySQL, il apparaît comme un étrange caractère étranger. J'ai lu le document sur Unicode and HTML Purifier et j'ai modifié le codage de la base de données et de la page Web pour qu'il soit UTF-8, mais j'ai toujours des problèmes avec le caractère espace non brisé qui n'est pas altéré. Les autres entités HTML, telles que &lt; et &gt;, sont enregistrées en tant que < et >, mais pourquoi pas &nbsp;?

+0

entités Envelopper et HTML dans les balises de code (regardez mon edit)! pour les empêcher d'être interprétés comme HTML réel. –

Répondre

3

L'espace insécable n'est pas enregistré dans votre base de données comme un caractère étranger étrange, il est enregistré sous la forme deux caractères. Le caractère espace insécable Unicode est codée en UTF-8 0xC2 0xA0, qui dans la norme ISO-8859-1 ressemble « Â » (à savoir un bizarre de caractère étranger suivi d'un espace insécable).

Vous oubliez probablement de faire SET NAMES 'utf8' sur votre connexion de base de données, ce qui oblige PHP à envoyer ses données à MySQL comme ISO-8859-1 (la valeur par défaut). Jetez un oeil à "UTF-8 all the way through…" pour voir comment configurer correctement UTF-8 en utilisant PHP et MySQL.

0

Il peut également vous aider à savoir que &#160; est un suppléant pour &nbsp; que vous aurez probablement besoin si jamais vous sortie tout XML lisible par l'homme;)