Bonjour,
Je cherche à faire une fonction qui remplace les accents, caracteres spéciaux et les espaces par "-" pour des url.
Ex: chéène AveC Pl&in dE çaractères___s--
dois donner cheene-avec-plein-de-caracteres-s
J'ai trouvé cette fonction sur le net:
function replace_accents($str) //on déclare la fonction
{
$str = htmlentities($str, ENT_COMPAT, "UTF-8");
$str = preg_replace('/&([a-zA-Z]) (uml|acute|grave|circ|tilde);/','$1',$str);
return html_entity_decode($str);
}
Mais elle ne marche pas chez moi, et ne transforme pas les espaces en "-", ne mets pas les caractères en minuscule...
Avez vous une fonction qui fais cela ?
Merci d'avance,
I.
Je croyais qu'il existait une fonction pour ce genre de truc...
Surtout que je fais ça manuellement plein de fois...
Alors pour ceux qui sont dans le même cas, j'ai passé un bout de temps à chercher les caractères spéciaux que je connais :
function mon_urlencode($url)
{
$url=strtolower(trim(stripslashes($url)));
//--caractères supprimés.
$url=str_replace("…","",$url);
$url=str_replace("«","",$url);
$url=str_replace("«","",$url);
$url=str_replace("»","",$url);
$url=str_replace("»","",$url);
$url=str_replace("!","",$url);
$url=str_replace("?","",$url);
$url=str_replace("\"","",$url);
$url=str_replace("/","",$url);
$url=str_replace(":","",$url);
$url=str_replace(")","",$url);
$url=str_replace("#","",$url);
$url=str_replace(".","",$url);
$url=str_replace(",","",$url);
$url=str_replace("%","",$url);
$url=str_replace("<","",$url);
$url=str_replace(">","",$url);
//--caractères remplacés.
$url=str_replace(" ","-",$url);
$url=str_replace("'","-",$url);
$url=str_replace("’","-",$url);
$url=str_replace("(","-",$url);
$url=str_replace("_","-",$url);
$url=str_replace("--", "-", $url);
$url=str_replace("&", "et", $url);
$url=str_replace("é","e",$url);
$url=str_replace("€","euros",$url);
$url=str_replace("è","e",$url);
$url=str_replace("ê","e",$url);
$url=str_replace("ë","e",$url);
$url=str_replace("à","a",$url);
$url=str_replace("â","a",$url);
$url=str_replace("ä","a",$url);
$url=str_replace("ù","u",$url);
$url=str_replace("û","u",$url);
$url=str_replace("ü","u",$url);
$url=str_replace("ï","i",$url);
$url=str_replace("î","i",$url);
$url=str_replace("ô","o",$url);
$url=str_replace("ö","o",$url);
$url=str_replace("ç","c",$url);
$url=str_replace(array('À','Á','Â','Ã','Ä'),"a",$url);
$url=str_replace(array('È','É','Ê','Ë'),"e",$url);
$url=str_replace(array('Ç'),"c",$url);
$url=str_replace(array('Ì','Í','Î','Ï'),"i",$url);
$url=str_replace(array('Ñ'),"n",$url);
$url=str_replace(array('Ù','Ú','Ü','Û'),"u",$url);
$url=str_replace(array('Ý'),"y",$url);
$url=str_replace(array('Ò','Ó','Ô','Õ','Ö'),"o",$url);
$url=str_replace("'","-",$url);
$url=str_replace("$","dollar",$url);
$url=str_replace("©","copyright",$url);
$url=str_replace("®","registred",$url);
$url=str_replace("œ","oe",$url);
$url=str_replace("æ","ae",$url);
$url=str_replace("Š","s",$url);
$url=str_replace("š","s",$url);
$url=str_replace("Ÿ","y",$url);
//-- Adaptation
$url = strtolower($url);
$url=str_replace("--","-",$url);
$url=str_replace("--","-",$url);
return $url;
}
Si j'en ai oublié, vous me le dites ;)
Bonne soirée,
Et merci !
Merci de ta réponse, mais ce n'est pas ce que je recherche.
C'est plutôt pour transformer http://mondomaine.fr/AveC Pl&in dE çaractères___s-- .html
en http://mondomaine.fr/cheene-avec-plein-de-caracteres-s.html
Ce n'est pas les paramètres GET.
Merci d'avance,
I.
ha je vois ce que tu veux... pour tes caracteres accentués, regarde avec un tableau associatif pour remplacer pour les espaces, c'est facile, un simple str_replace et pour une sorte de dictionnaire (passer de Pl&in à plein c'est pas simple) je sais pas...
ha et pour passer tout en minuscules : strtolower suffit :)