[php] probleme suppression d'accent utf-8
Résolu
diice
Messages postés
131
Date d'inscription
Statut
Membre
Dernière intervention
-
diice Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
diice Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
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 :
merci d'avance pour votre aide ! je n'en peux plus !
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 !
A voir également:
- [php] probleme suppression d'accent utf-8
- Clé windows 8 - Guide
- Forcer suppression fichier - Guide
- Mixcraft 8 - Télécharger - Création musicale
- E accent minuscule - Guide
- Internet explorer 8 - Télécharger - Navigateurs
1 réponse
bon, du coup je me reponds a moi meme et a ceux a qui ca pourra servir !
voilà mes nouvelles fonctions :
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)); }