Posez votre question Signaler

[php] probleme suppression d'accent utf-8 [Résolu]

diice 58Messages postés 17 novembre 2003Date d'inscription 28 mars 2012Dernière intervention - Dernière réponse le 27 oct. 2011 à 16:49
Bonjour,
Ca fait quelques heures que je passe a essayer de trouver une solution !
du coup je me décide enfin à laisser un message en esperant que vous pourrez m'aider !
j'essaye de supprimer les accents d'une chaine de carateres.
en fait, j'ai fait de l'url rewriting sur un site.
et je balance dans l'adresse des articles le titre de cet article ex :
/article-180-l-ete-sera-tres-chaud.html
aujourd'hui mon probleme est que j'obtiens :
/article-180-l--t--sera-tr-s-chaud.html
j'ai essayé avec strtr, avec preg_replace, avec mb_ereg_replace....
bref, ca marche pas. j'ai fait plein de forums qui donnent des solutions qui apparemment marchent pour les autres mais pas pour moi. :(
en fait je stock en BDD les titres sous forme "l'& eacute;t& eacute; sera tr& egrave;s chaud".
donc je me dis, qu'en faisant un html_entity_decode ca va transformer les & eacute; en é. ca c bon.
mais après, rien n'y fait, il me vire quand meme les accents et met un "-" au lieu de me les remplacer par un caractere sans accent.
voici mes fonctions :
function NoAccentTag($string){    
        $string=html_entity_decode($string);    
 return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿ','aaaaaceeeeiiiinooooouuuuyy');    
}    

function RewriteName($text)    
{    
   $text=strtolower($text);    
   $text = NoAccentTag($text);    
   $separator = "-";    
   $text = mb_ereg_replace("[^a-z0-9.]", $separator, $text);    
   $text = str_replace("...","",$text);    
   while (strstr($text, $separator . $separator))    
      $text = str_replace($separator . $separator, $separator, $text);    
   if (substr($text, 0, 1) == $separator)    
      $text = substr($text, 1);    
   return(mb_ereg_replace($separator . "$", "", $text));    
}

merci d'avance pour votre aide ! je n'en peux plus !
Lire la suite 

[php] probleme suppression d'accent utf-8 »

1 réponses
Réponse
+0
moins plus
bon, du coup je me reponds a moi meme et a ceux a qui ca pourra servir !

voilà mes nouvelles fonctions :
function NoAccentTag($str)
{
    $str = htmlentities($str);
    
    $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
    $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
    $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
    
    return $str;
}

function RewriteName($text)
{
   $text=strtolower($text);
   $text=html_entity_decode($text);
   $text = NoAccentTag($text);
   $separator = "-";
   $text = mb_ereg_replace("[^a-z0-9.]", $separator, $text);
   $text = str_replace("...","",$text);
   while (strstr($text, $separator . $separator))
      $text = str_replace($separator . $separator, $separator, $text);
   if (substr($text, 0, 1) == $separator)
      $text = substr($text, 1);
   return(mb_ereg_replace($separator . "$", "", $text));
}
Ajouter un commentaire
Ce document intitulé « [php] probleme suppression d'accent utf-8 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?