Version complète: sur le forum Webmaster Hub : Problème d'encodage d'une chaîne
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
bobdeo
Salut et bonne année !

J'essaie de remplacer "Étui acrylique transparent façade métal Nano 2G" par son équivalent sans accent.
Totu est dans les commentaires...

CODE
<?php
$name = 'Étui acrylique transparent façade métal Nano 2G';
echo $name;
// pas bon -> Étui acrylique transparent façade métal Nano 2G
// j'encode en utf8 pour bon affichage
$name = utf8_decode($name);
// c'est ok -> Étui acrylique transparent façade métal Nano 2G
// on remplace les accents
$name = strtr($name,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
echo $name;
// pas bon -> Y‰tui acrylique transparent faYiade mYotal Nano 2G
?>


Help ! merci pour votre aide.
captain_torche
Tu peux essayer avec cette fonction :
CODE
<?php
function enleve_accents($chaine) {
// Transforme la chaîne en son équivalent HTML, (à devient &agrave;), puis supprime les caractères superflus (ici, '&' et 'grave;')
$reg = '/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/';
return preg_replace($reg, '\1', htmlentities($chaine));
}
?>
bobdeo
Ca marche ! merci !

j'ai aussi trouvé ça (qui tourne aussi - un peu le même principe) :
CODE
function unaccent($text) {
    $trans = get_html_translation_table(HTML_ENTITIES); // Table des entités dans un tableau
    foreach ($trans as $litteral => $entity) {          // 2 tableaux : un pour les caractères
                                                       //accentués et un pour les autres
        if (ord($litteral) >= 192) {                    // On ignore les autres
                                                                  //caractères bizarres                  
                                                                 //(fractions, quotes etc)
            $replace[] = substr($entity, 1, 1);         // Récupère le 'E' de '&Eaccute' etc.
            $search[] = $litteral;                      // Récupère la forme accentuée
        }
    }
    return str_replace($search, $replace, $text);
}
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.