Fonction PHP : to_permalink()

Ici, vous pouvez voir (et copier/coller) le code complet de la fonction PHP to_permalink(). N'hésitez pas voter pour cette fonction si elle vous plaît ou si vous vouv en servez !

to_permalink() ajouté le 2009-05-18 13:23:33 par seebz

function to_permalink($str)
{
	$str = str_replace('&','et',$str);
	// Converti en UTF-8 si nécessaire
	if($str !== mb_convert_encoding(mb_convert_encoding($str,'UTF-32','UTF-8'),'UTF-8','UTF-32'))
		$str = mb_convert_encoding($str,'UTF-8');
	$str = htmlentities($str,ENT_NOQUOTES,'UTF-8');
	$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i','$1',$str);
	$str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'),'-',$str);
	$str = strtolower(trim($str,'-'));
	return $str;
}

Voter pour cette fonction


Converti un chaine pour être utilisée dans une url.
L'intéret est que cette fonction fonctionne quel que soit l'encodage (charset) utilisé.

Usage:
$title = "J'adôre les Sushis";
$permalink = to_permalink( $title ); // "j-adore-les-sushis"

Commentaires sur la fonctions php

Robin 27/05/2009 à 16:00

Merci pour cette fonction, moi qui m'embêtait encore hier avec des "ereg_replace"

Tsadiq 07/07/2009 à 14:25

preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i','$1',$str);

Sinon, y'a aussi la fonction htmlentities() ou dans un autre style url_encode()

Je vous laisse aller voir sur php.net ;)

Amaury 03/09/2009 à 16:15

Merci merci merci !
Je me cassais la tête a cause d'un problème entre le codage sur notepad++ (UTF8) et le codage du site (ANSI) que je ne pouvais changer !

MERCI ! :-)

Malin 20/11/2009 à 20:36

Alors là, je dis chapeau, monsieur !
C'est exactement la fonction php qu'il me fallait alors maintenant je ne vais pas m'embêter, je vais faire un copié/collé mais chut, c'est entre nous...
;-)

Juin 06/01/2010 à 16:04

Puissante fonction qui ne laisse rien passé. Merci.

Seebz 17/02/2010 à 19:25

J'ai mis à jour la fonction sur mon site car elle laissait parfois passer des 'raquo' et autre entités html qui n'étaient pas bien gérées.

http://code.seebz.net/p/to-permalink/

plop 04/05/2010 à 02:46

J'avais fait un petit bout de code ou je devais formater des données avant d'envoyer sur un site distant.
Je bosse toujours en utf-8 donc pas la peine de rajouter de traitement supplémentaire....

function formatSearch($string){
   $search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[^a-zA-Z0-9]@');
   $replace = array ('e','a','i','u','o','c','-');
   return preg_replace($search, $replace, $string);
}