Remplace accents d'une url

Par codimix, il y a 14 ans


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.

4 réponses

Flohw, il y a 14 ans

urlencode ? O_o
note : les espaces sont remplacés par des + (raisons historique, cf doc)

Flohw, il y a 14 ans

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 :)

codimix, il y a 14 ans

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 !