c
a
d
r
a
t






  Entrée  
   Ressources   
    Code  
     Formatage  
 
+  Des ressources en corpus, isotopies et programmes
+  Des articles d’ études sur le traitement automatique de la langue
+  Les pages du site pour des recherches, informations, résumés...


 
     les programmes de nivellement de caractères à encodages multiples en PHP   
La convertion des entités HTML et des divers codes de représentation des caractères

 1.  L’encodage d’une page html

Il arrive qu’un navigateur doive représenter plusieurs normes de caractères dans une même page HTM, qu’un agrégateur fasse coexister des pages RSS au codage différent ou qu'une page XML n'admette qu'un seul type d'encodage. Afin d'aider au nivellage des caractères d'une page HTM, RSS ou XML, il est exposé ci-dessous une liste de phrases éprouvant in situ les instructions PHP de conversions de texte de type html_entity_decode puis un code de programmation synthétisant la conversion de tous les formats courants d'une page HTML. Un décalage de la représentation des caractères s’observe aussi sur papier, par exemple pour les guillemets, rarement uniformes, ou avec des caractères rares comme œ et le oe. Cette ligature présente une différence minime à la lecture, mais en cas de classement ou de choix de représentation, elle implique une uniformisation, de considérer une orthographe selon le phœnix (la forme vieillie ou la variété de palmier) ou phénix, et sans risquer l’analogie avec l’anglais phoenix, voire pertubent l’immuable 26 lettres de l’alphabet français, avec un caractère qui est une contraction graphique.

La réalisation de la présente page est un bon test pour éprouver les solutions à l'encodage de caractères. Deux problèmes se sont posés. Le premier est de rendre les transformations opérées sur le texte par les instructions de type htmlentities, le second de représenter l'ensemble du code programmation. Pour le premier, le présent navigateur convertissant les entités HTML en caractères pleins, il devient compliqué d'afficher un rendu exact des tests de conversion. Afin d'éviter la conversion en entité HTML des tableaux de tests, et afficher un rendu de type code source, l'encodage de la présente page est en ISO-8859-1 et utilise la fonction d'affichage Canvas d'HTML5, qui transforme le texte en graphique (même dans une balise textarea le résultat serait encodé par le navigateur). Pour le second problème, à savoir l'affichage du code de programmation, étant donné que le code doit être récupérable dans son mode texte et qu'il n'est pas possible de le réaliser dans une balise Canvas, il a été choisi d'afficher le code par l'intermédiaire d'une balise iframe d'un fichier en extension .php (pour eviter son ouverture en externe) en plaintext (pour empêcher la conversion en entité HTML).

Parmi ces formats courants d’une page HTML, l’on relève par exemple pour un caractère dit Latin comme le é :
- é pour les entités HTML (appelées entités littérales) ouvert avec l’esperluette et fermé par un point-virgule ;
- é pour l’ASCII étendu (appelées entités numériques), avec l’esperluette et le croisillon puis la valeur ASCII ;
- é pour l’UTF8 qui comporte le A avec tilde puis un autre caractère ;
- %E9 pour l’encodage des URL qui comporte le % suivi d’un code à deux caractères ;

PHP décline plusieurs instructions afin de transformer le texte d’un format à un autre. Depuis PHP 5 il est nécessaire de préciser "ISO-8859-1" en troisième argument et ENT_QUOTES ou ENT_IGNORE en second pour les guillemets. Les test ci-dessous permettent de constater que l'entité ’ n'est pas retenue par ENT_QUOTES.

Pour amorcer le format de la page html il est ncessaire de la prciser soit dans la page <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> ou <meta charset="ISO-8859-1"> soit dans l'excution PHP header( 'content-type: text/html; charset=ISO-8859-1' ); ou ini_set('default_charset', 'ISO-8859-1');. Ces deux dernires étant beaucoup plus solides.
 


 

 2.  instructions de conversion

 2.1.  caractère vers entité

htmlentities($str) : les caractres bruts de type accent ou balises sont transforms en entits HTML.

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 

 2.2.  caractère vers entité, apostrophes incluses

htmlentities($str, ENT_QUOTES) : variante pour inclure la transformation des apostrophes.

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 

 2.3.  entité vers caractère

html_entity_decode($str) : les entits HTML de type accent ou balises sont transforms en caractres bruts.

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 

 2.4.  entité vers caractère, apostrophes incluses

html_entity_decode($str, ENT_QUOTES) : variante pour inclure la transformation des apostrophes doubles et simples. À noter que &rsquo; n’est pas retenu comme apostrophe.

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 

 2.5.  entité numérique vers caractère, apostrophes incluses

Unhtmlentities($str) : les entits HTML numriques de type accent ou balises sont transforms en caractres bruts.
La transcription n’est pas native, il faut donc recourir une fonction avec preg_replace.

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 

 2.6.  décodage d’une chaîne à codages imbriqués

La transformation des entits HTML alphabtiques (ou littrales), numriques, UTF8, de type accent, balise et apostrophe, en graphme unique ou group (points de suspension).

Initiale :

Transforme :

chane dans le prsent code source : Matins d't.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d’été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été et d'automne.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matins d'<strong>été</strong>.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d'été.
 
 Initiale :

Transforme :

chane dans le prsent code source : Matinées d’un "été".
 
 Initiale :

Transforme :

chane dans le prsent code source : Un oeuf et un uf, et deux œufs et un autre œuf.
 
 Initiale :

Transforme :

chane dans le prsent code source : áÁâÂàÀåÅãÃäÄæÆçÇéÉêÊèÈëËíÍîÎìÌïÏñÑóÓôÔòÒøØõÕöÖ
 
 Initiale :

Transforme :

chane dans le prsent code source : ßðÐþÞúÚûÛùÙüÜýÝÿ
 
 Initiale :

Transforme :

chane dans le prsent code source : œŒšŠŸ
 
 Initiale :

Transforme :

chane dans le prsent code source :  ­‎‏"«»‹›“”„'‘‚…¡¿¨´ˆ˜¸·•¯‾–—¦‌‍†‡§¶©®™&◊♠♣♥♦←↑→↓↔¤€$¢£¥ƒ
 
 Initiale :

Transforme :

chane dans le prsent code source : °µ<>≤≥≈≠≡±−×÷⁄‰¼½¾¹²³ºªƒ′″∂∏∑√∞¬∩∫
 
 Initiale :

Transforme :

chane dans le prsent code source : "«»‹›“”„'‘’‚…!¡?¿()[]{}¨´`^ˆ~˜¸#*,.:;·•¯‾-–—_|¦‌§¶©®™&@/\◊♠♣♥♦←↑→↓↔†‡ ­‎‏
 
 Initiale :

Transforme :

chane dans le prsent code source : œçéèêëÊËîïìÎòôöõóøÔÖâäåÂÄùûüÛÜòñ䅙
 
 Initiale :

Transforme :

chane dans le prsent code source : Voici le texte le plus mal encodé de la toute la blogosphère (et pas seulement cause des caractres accentués).
 
 


 

     Le langage PHP    II.3.3.  
     Le programme de conversion en minuscule en PHP

     La page d’accueil
     Le sommaire des pages


       Site       motte 0.5  
       Imprimer  
     Rédaction / Publication : 19.04.2010     Révision : 10.02.2016
      http://cadrat.saynete.net2003 - 2018