Aller au contenu

Problème d'encodage d'une chaîne


bobdeo

Sujets conseillés

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...

<?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 -> Ytui acrylique transparent faYiade mYotal Nano 2G
?>

Help ! merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Tu peux essayer avec cette fonction :

<?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));
}
?>

Lien vers le commentaire
Partager sur d’autres sites

Ca marche ! merci !

j'ai aussi trouvé ça (qui tourne aussi - un peu le même principe) :

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);
}

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...