Jusqu'à présent j'utilisais des fonctions perso pour remplacer les
caractères HTML par leur équivalent 'texte' dans les chaînes de
caractères. Je n'utilise html_entity_decode() que depuis peu de temps.
J'ai constaté que cette fonction ne remplace pas le caractère HTML
. (caractère point).
Quelqu'un pourrait-il m'expliquer le comportement de
html_entity_decode() par rapport au caractère HTML . ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hughes Monget
Jusqu'à présent j'utilisais des fonctions perso pour remplacer les caractères HTML par leur équivalent 'texte' dans les chaînes de caractères. Je n'utilise html_entity_decode() que depuis peu de temps. J'ai constaté que cette fonction ne remplace pas le caractère HTML . (caractère point). Quelqu'un pourrait-il m'expliquer le comportement de html_entity_decode() par rapport au caractère HTML . ?
Bonjour,
Dans une "user contributed notes" de la fonction html_entity_decode() du "php manual", il est affirmé que:
This function seems to have to have two limitations (at least in PHP 4.3.8): a) it does not work with multibyte character codings, such as UTF-8 b) it does not decode numeric entity references
L'auteur (daniel at brightbyte dot de) propose une solution:
a) can be solved by using iconv to convert to ISO-8859-1, then decoding the entities, than convert to UTF-8 again. But that's quite ugly and detroys all characters not present in Latin-1. b) can be solved rather nicely using the following code:
<?php function decode_entities($text) { #NOTE: UTF-8 does not work! $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #decimal notation $text= preg_replace('/&#(d+);/me',"chr(1)",$text); #hex notation $text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x1)",$text); return $text; }
HTH
-- hughes monget
Jusqu'à présent j'utilisais des fonctions perso pour remplacer les
caractères HTML par leur équivalent 'texte' dans les chaînes de
caractères. Je n'utilise html_entity_decode() que depuis peu de temps.
J'ai constaté que cette fonction ne remplace pas le caractère HTML
. (caractère point).
Quelqu'un pourrait-il m'expliquer le comportement de
html_entity_decode() par rapport au caractère HTML . ?
Bonjour,
Dans une "user contributed notes" de la fonction html_entity_decode()
du "php manual", il est affirmé que:
This function seems to have to have two limitations
(at least in PHP 4.3.8):
a) it does not work with multibyte character codings, such as UTF-8
b) it does not decode numeric entity references
L'auteur (daniel at brightbyte dot de) propose une solution:
a) can be solved by using iconv to convert to ISO-8859-1, then
decoding the entities, than convert to UTF-8 again. But that's
quite ugly and detroys all characters not present in Latin-1.
b) can be solved rather nicely using the following code:
<?php
function decode_entities($text)
{
#NOTE: UTF-8 does not work!
$text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1");
#decimal notation
$text= preg_replace('/&#(d+);/me',"chr(\1)",$text);
#hex notation
$text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\1)",$text);
return $text;
}
Jusqu'à présent j'utilisais des fonctions perso pour remplacer les caractères HTML par leur équivalent 'texte' dans les chaînes de caractères. Je n'utilise html_entity_decode() que depuis peu de temps. J'ai constaté que cette fonction ne remplace pas le caractère HTML . (caractère point). Quelqu'un pourrait-il m'expliquer le comportement de html_entity_decode() par rapport au caractère HTML . ?
Bonjour,
Dans une "user contributed notes" de la fonction html_entity_decode() du "php manual", il est affirmé que:
This function seems to have to have two limitations (at least in PHP 4.3.8): a) it does not work with multibyte character codings, such as UTF-8 b) it does not decode numeric entity references
L'auteur (daniel at brightbyte dot de) propose une solution:
a) can be solved by using iconv to convert to ISO-8859-1, then decoding the entities, than convert to UTF-8 again. But that's quite ugly and detroys all characters not present in Latin-1. b) can be solved rather nicely using the following code:
<?php function decode_entities($text) { #NOTE: UTF-8 does not work! $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #decimal notation $text= preg_replace('/&#(d+);/me',"chr(1)",$text); #hex notation $text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x1)",$text); return $text; }