Ludovic ROLAND

Blog technique sur mes expériences de développeur.

PHP : formatez vos URL !

17 septembre 2012

Pour tout possesseur d’un site internet, l’objectif est d’être bien positionné dans Google.

Il existe de multiples règles qui permettent de gagner des positions dans le moteur de recherche du géant américain et aujourd’hui nous allons parler des URL.

Beaucoup de site internet ont encore à l’heure actuelle une URL de la forme : http://www.mon-site.com/page.php?id=1

Ce qui est important, c’est l’identifiant de l’objet que vous souhaitez afficher. Mais pour gagner en référencement, il manque quelque chose d’important : le nom de cet objet.

Le nom de l’objet c’est quoi ? C’est par exemple le nom du sujet que l’on affiche sur un forum.

Le problème, c’est que ce nom est généralement saisi par un utilisateur et peut comporter des majuscules, des minuscules, des chiffres et des caractères spéciaux.

Je vous propose ici quelques lignes de PHP vous permettant de formater le nom de votre objet sous la forme nom-objet afin de pouvoir par la suite le réinjecter dans l’URL pour obtenir quelque chose de la forme : http://www.mon-site.com/nom-objet-1.html

A noter que je me place ici dans le cas d’un encodage UTF-8.

public function format($libelle) {	
    //On remplace les accents par le caractère sans accent
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $libelle = trim(utf8_decode($libelle));
    $libelle = strtr($libelle, utf8_decode($a), $b);

    //On enlève les chiffres
    $libelle = preg_replace('#[0-9]#', '', $libelle);

    //On enlève les caractères spéciaux
    $libelle = preg_replace('#[^a-zA-Z ]#', '', $libelle);

    //On remplace les espaces restants par des tirets
    $libelle = preg_replace('/\s+/', '-', $libelle);

    //On retourne la chaîne en minuscule
    return strtolower($libelle);
}

On peut évidemment simplifier cet algorithme en réduisant le nombre de ligne, en combinant notamment plusieurs opérations preg_replace, mais le but est ici de vous montrer la démarche.

Commentaires