Php - Remplacer les accents par leurs valeurs html

Il se peut que vous ayez à afficher une chaîne de caractères comprenant des caractères accentués en utf8, ainsi que du code html, et que vous souhaitiez pouvoir afficher ces caractères accentués quelque soit l?encodage de la page (par exemple dans le cas d?un javascript qui afficherait du code html avec des accents) .

La fonction ci-dessous se contente de ne remplacer que les caractères accentués, et laisse intact les entités html.

Avantage par rapport à htmlentities ? Elle laissera vos balises html intactes, sans > ou ce genre d'expressions ...

Le code PHP :
<?php

Function accents_entities($string){

// On commence par transformer les caractères utf8 en iso « ordinaire »

$string = utf8_decode($string) ;

// On définit la liste des caractères à remplacer :

$caracteres=array('é','è','à','ë','ê','û','ü','ù','î','ï', 'ô', 'ö');

// On définit les entités qui les remplaceront :

$entities=array('&eacute;', '&egrave;', '&agrave;', '&euml;', '&ecirc;', '&ucirc;', '&uuml;', '&ugrave;', '&icirc;', '&iuml;', '&ocirc;', '&ouml;');

// On applique le remplacement :

$string = str_replace($caracteres,$entities,$string);

// On retourne la nouvelle chaine :

Return $string ;

}

?>

Usage :


<?php $chaine = accents_entities($chaine); ?>

 
Exemple :



<?php

$chaine = 'Elle va être pratique cette fonction codée par Grégoire';

// On passe la chaine en UTF8, pour tester :
$chaine=utf8_encode($chaine);

$chaine = accents_entities($chaine);

?>

Vous retournera :
Elle va &ecirc;tre pratique cette fonction cod&eacute;e par Gr&eacute;goire


Gpenverne

Gpenverne

Dév back, symfonien, adore bidouiller des machins pour faire des bidules, sans se poser la question de leur utilité...

Read More