15 Aout 2007
Urlrewriting basique - Réécriture des urls
Compatibilité : PHP 5, PHP 7
Fonction simple qui réécrit une url en friendly url. Cette fonction ne prend pas en compte les caractères spéciaux.
Fonction qui permet de réécrire les URL en remplaçant tous les caractères spéciaux et les accents par un tiret (-).
Les urls sont sous la forme : ceci-est-mon-url-reecrite
|
|
php.net | Description | Versions PHP | OUTIL |
---|---|---|---|
echo | Affiche une chaîne de caractères | PHP 4, PHP 5, PHP 7, PHP 8 | |
preg_replace | Rechercher et remplacer par expression rationnelle standard | PHP 4, PHP 5, PHP 7, PHP 8 | |
return | Retourne le controle du programme au module appelant. | PHP 4, PHP 5, PHP 7, PHP 8 | |
strtolower | Renvoie une chaîne en minuscules | PHP 4, PHP 5, PHP 7, PHP 8 | |
strtr | Remplace des caractères dans une chaîne | PHP 4, PHP 5, PHP 7, PHP 8 | |
Fonction simple qui réécrit une url en friendly url. Cette fonction ne prend pas en compte les caractères spéciaux.
Fonction pour optimiser une chaine de caractère afin de faire de la réécriture d'url et d'avoir de jolies urls.
Invité
07 Déc 2010 à 02:45une autre solution simplement utiliser urlencode() natif de PHP
Invité
21 Oct 2010 à 11:35Une autre version à jour et simplifiée / commentée : function url_rewrite($url)
{
// Mise en minuscule
$url = strtolower($url);
//On supprime les accents
$url = strtr($url, 'àáâãäåòóôõöøèéêëçìíîïùúûüÿñ', 'aaaaaaooooooeeeeciiiiuuuuyn');
// On supprime les caractères spéciaux, ponctuation, ...
$url = preg_replace('#[;,.:/()<>=+*?!'"[] ]#', '-', $url);
// On remplace les tirets multiples qui se suivent par un seul tiret
$url = preg_replace('#-{2,}#', '-', $url);
// Renvoi url rewritée
return $url;
}
Nicol@s
08 Oct 2010 à 02:00Lit corrextement ton message d'erreur, preg_replace() n'est pas dépréciée. C'est ereg_replace() qui l'est.
Nicolas
Invité
17 Juin 2010 à 23:06heu.. pardon c'est PREGREPLACE qui est deprecated....
Invité
17 Juin 2010 à 23:05merci pour l'autre solution !! ca focntionne parfaitement !! la fonction Preg replace est DEPRECATED
Mikaweb
24 Aout 2007 à 13:44J'ai plus simple ;)
function format_url( $url, $type = '' ){
$url = preg_replace("`\[.*\]`U","",$url);
$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
$url = htmlentities($url, ENT_COMPAT);
$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
return $url;
}