Jump to content
Sign in to follow this  
Nel

XHTML strict et PHP

Rate this topic

Recommended Posts

Je sais que c'est sans doute un problème récurrent mais je n'ai pas trouvé de réponse en faisant une recherche sur le forum...

Je n'ai pas un très haut niveau en PHP.

Pour que mes pages soient valides XHTML, et soient correctement affichées il faut que les caractères accentués soient correctement encodés (les classiques é pour é et & pour &)...

Comme je veux pouvoir ajouter ou modifier les données de ma base aussi bien via PHPMyAdmin que via la page d'administration que j'ai créée moi-même, il faut que les caractères problématiques soient modifiés lorsqu'ils sont récupérés dans la base de données.

Pour cela dois-je à un moment un

$str=ereg_replace('&','&',$str);

ou bien y'a t'il un format que je peux utiliser pour mes données qui puisse me simplifier la vie ?

Je m'y perds un peu entre les VARCHAR, TINYTEXT, BLOG etc...

Où puis-je trouver de la doc là dessus ?

Share this post


Link to post
Share on other sites

Bonjour Nel :)

Tu peux déclarer le jeu de carcactères ISO-8859-1 dans le <head> de ton doc de la manière suivante :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Ainsi, tu n'as plus besoin d'encoder les caractères ;)

Share this post


Link to post
Share on other sites

J'ai dû mal m'exprimer.

Mes pages utilisent bien le jeu de caractères ISO-8859-1.

Seulement est-ce que cela suffit pour que les caractères spéciaux s'affichent correctement en toute occasion (même sur Mac OS par exemple) ?

De plus si j'affiche un caractère & au moyen de PHP celui-ci sera refusé par la validation XHTML strict...

Ah ils sont beau les standards !!! :fou:

Share this post


Link to post
Share on other sites

- tu n'as pas besoin de coder tes caractères étendus (accents par exemple) sous forme d'entité (é) si tu déclares correctement ton jeu de caractères dans le fichier HTML

- les varchar, tinytext et autres sont des types de données pour MySQL et les autres SGBD. Leur rôle est de stocker la donnée, il ne t'aideront jamais à faire autre chose, ils n'ont en particulier rien à voir avec la notion d'échappement HTML

- tu ne devrais jamais utiliser ereg_* mais toujours preg_*

- tu n'as pas besoin d'ereg ou preg pour faire les échappements HTML (mise sous forme d'entités) : htmlspecialchars() et htmlentities() font très bien ça toutes seules

- Par contre, de même que tu dois faire un addslahes pour éviter les apostrophes dans les chaînes SQL, de même que tu dois mettre\" pour faire un guillemet quand tu écris une chaîne PHP, en HTML certains caractères sont spéciaux car ils déclenchent des actions spécifiques. Ce sont en particulier < > et & (début et fin de balise, début d'entité). Il doivent donc être échappés si tu ne veux pas qu'ils soient interprétés et jouent leur rôle "magique". La fonction pour les échapper est htmlspecialchars().

Tous les langages, que ce soit le SQL, le shell, le HTML, ls XML, PHP ou le C, ont des caractères spéciaux pour traiter les données et nécessitent de passer par une fonction d'échappement. Ca n'a rien à voir avec "...les standards..." comme tu sembles les nommer

Share this post


Link to post
Share on other sites

Merci Ganf, j'y vois déjà un peu plus clair.

J'ai en effet certainement tendance à tout mélanger :)

Je vais donc me renseigner à propos de cette fameuse fonction "htmlspecialchars()"...

Share this post


Link to post
Share on other sites
J'ai dû mal m'exprimer.

Mes pages utilisent bien le jeu de caractères ISO-8859-1.

Seulement est-ce que cela suffit pour que les caractères spéciaux s'affichent correctement en toute occasion (même sur Mac OS par exemple) ?

De plus si j'affiche un caractère & au moyen de PHP celui-ci sera refusé par la validation XHTML strict...

Ah ils sont beau les standards !!!  :fou:

<{POST_SNAPBACK}>

Oui, l'affichage s'effectue correctement, mais pour valider, il faut cependent que tous les caractères spéciaux (& notemment) compris dans les URLs des liens soient correctement encodés avec les entités correspondantes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...