Convertir un titre en URL en PHP (slug)

Lorsque nous souhaitons générer des URL lisibles à partir d’un titre ou d’une phrase sans retrouver les caractères spéciaux de la fonction urlencode() de PHP, il faut convertir manuellement la chaîne, afin qu’elle soit lisible et interprétable.

A l’instar de la génération automatique des URL et slugs sur WordPress, la fonction suivante transforme la chaîne d’entrée en la passant en minuscules, en convertissant les caractères spéciaux, et en remplaçant les espaces par le caractère souhaité.

function slugify($string, $delimiter = '-') {
	$oldLocale = setlocale(LC_ALL, '0');
	setlocale(LC_ALL, 'en_US.UTF-8');
	$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
	$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
	$clean = strtolower($clean);
	$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
	$clean = trim($clean, $delimiter);
	setlocale(LC_ALL, $oldLocale);
	return $clean;
}

 

Exemples

echo slugify("Poésie Française");
// poesie-francaise
echo slugify("Littérature sentimentale");
// litterature-sentimentale