TheRec
mardi 14 juin 2005 à 23:02
Une piste :
CODE
function xmlentities($string, $quote_style=ENT_QUOTES)
{
static $trans;
if (!isset($trans)) {
$trans = get_html_translation_table(HTML_ENTITIES, $quote_style);
foreach ($trans as $key => $value)
$trans[$key] = '&#'.ord($key).';';
// dont translate the '&' in case it is part of &xxx;
$trans[chr(38)] = '&';
}
// after the initial translation, _do_ map standalone '&' into '&'
return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&" , strtr($string, $trans));
}
Le hic c'est que la table de translation "HTML_ENTITIES" ne contient pas € apparemment

Mais si tu crée ta propore table "$trans" ça va fonctionner. Le cas spécial de "&" est traîté, le caractère n'est pas converti car on l'utilise comme séparateur dans les url, donc il vaut mieux le traîter à part (en tout cas c'est ainsi que je l'ai compris).
PS: Le code vient de cette page
http://ch2.php.net/htmlentitiesdans les commentaires...