Url rewriting est ton ami
Le avril 27th, 2008L’url rewriting, c’est l’art d’avoir un lien vers une page web qui soit lisible par des humains, et surtout des moteurs de recherche.
C’est très utilisé par les blogs, qui mettent le titre de l’article dans l’url.
Exemple :
Bon : http://toto.com/articles/mon-jeu-prefere-de-supernintendo.html
Mauvais : http://toto.com/2007/article.php?id=684
On remarque que les accents sont aussi transformés, car une url avec accent, c’est moche, en effet on ne voit pas l’accent mais son équivalent encodé, car oui, du point de vue d’une url, un accent c’est un caractère spécial.
Mauvais : http://toto.com/articles/mon-jeu-pr%E9f%E9r%E9-de-supernintendo.html
Mauvais : http://toto.com/articles/mon-jeu-prfr-de-supernintendo.html
Notez que certains mauvais algo virent tout simplement les accents, et on perd aussi le mot. Le problème se pose aussi avec une apostrophe :
Mauvais : http://toto.com/articles/sauvez-l%27oiseau.html
Mauvais : http://toto.com/articles/sauvez-loiseau.html
Bon : http://toto.com/articles/sauvez-l-oiseau.html
Il y a d’autres délires que j’ai vu comme des noms de page qui commencent ou finissent par des tirets (ce qui est moche)…
J’ai fais mon algo perso de rewriting, et je vous le donne. Utilisez-le bien.
//! Transforme un texte en nom de fichier simple et lisible function text2filename($str, $spaceChar = '-') { $str = preg_replace('/[:;?!¡,~R()=%"«»]/', '', $str); $str = strtr($str, 'äàáâãåÀÁÂÃÅÇçèéêëÈÉÊËìíîïÌÍÎÏÑñÒÓÔÕòóôõÙÚÛùúûÝýÿÐ', 'aaaaaaAAAAACceeeeEEEEiiiiIIIINnOOOOooooUUUuuuYyyD'); $str = str_replace( array('Ä','Æ','æ','Ö','ö','ß','Ü','ü'), array('AE','AE','ae','OE','oe','ss','UE','ue'), $str); $str = preg_replace('/[ _\'\/.-]+/', $spaceChar, $str); $str = trim($str, $spaceChar); return strtolower($str); } |
Nous qui nous lançons avec le CMS SPIP, ton script va nous servir !
Merci, je le garde sous l’aile :-)
Khanard
avril 27th, 2008
C’est pas mal. Par contre, j’ai dernièrement eut des soucis avec strtr qui travail directement sur les octets. Ce qui est un poil embêtant quand on bosse en UTF-8.
Je raconte pas le bordel pour indexer une base en UTF-8 avec un moteur ISO puis un affichage des résultats en UTF-8. La joie des charset ^^
Donc à noter qu’il peut y avoir des bugs générés simplement à cause de strtr. Certains recommandent str_replace au lieu de strtr.
Steven
juillet 25th, 2008
Allez, tiens, même si l’article est ancien, vu que je suis retombé dessus, je vais donner ma fonction à moi (en espérant que ça casse pas l’indentationvu qu’y a pas de balises « code ») :
function nettoieURL ($url, $sep = ‘-‘) {
$url = strip_tags($url);
// Remplacements spéciaux
$patterns = array(
‘%’ => ‘p. 100’,
‘@’ => ‘ at ‘,
);
$url = str_replace(array_keys($patterns),array_values($patterns),$url);
$url = strtolower($url);
$url = htmlentities($url,ENT_QUOTES,’UTF-8’);
// Remplacements…
$patterns = array(
‘#&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash|caron);#’ => ‘$1’, // … des diacritiques
‘#&([a-z]{2})lig;#’ => ‘$1’, // … des ligatures
‘#&[a-z0-9\#]*;#U’ => $sep, // … des caractères spéciaux
‘#[^a-z0-9]+#’ => $sep, // … du reste (parenthèses, groupes de tirets…)
);
$url = preg_replace(array_keys($patterns),array_values($patterns),$url);
$url = trim($url,$sep);
return $url;
}
Guenhwyvar
février 20th, 2012