01 | | 02 | | 03 | | 04 | | 05 | | 06 | | 07 | | 08 | | 09 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 | | 28 | | 29 | | 30 | | 31 | | 32 | | 33 | | 34 | | 35 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | |
|
<?php | /**************************************************************************************/ | /* | Titre : Optimiser un chaine pour la réécriture d'URL | | URL : | http://phpsources.org/code/php/chaine/345_optimiser-un-chaine-pour-la-reecriture-d-url | Auteur : crocxx | Date edition : 22 Fév 2008 | */ | /**************************************************************************************/ | ?> | <?php | function OptimiseUrl($chaine) | { | $chaine=strtolower($chaine); | | $accents = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", | "/ù/", "/ô/"); | $sans = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o"); | | $chaine = preg_replace($accents, $sans,$chaine); | | | $entre = array(' ', '?', '!', '.', ',', ':', "'", '&', '(', ')', '"','/'); | $sortie = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-'); | $chaine = str_replace($entre, $sortie, $chaine); | | | $modifchaine=true; | while($modifchaine==true) | { | $modifchaine=false; | | if(ereg('--',$chaine)) | { | $chaine = str_replace('--','-',$chaine); | $modifchaine=true; | } | } | | return $chaine; | } | ?> | | |
|
Invité
08 Nov 2008 à 23:32Salut,
Une ch'tiote fonction trouvée sur WRI et qui s'avère très pratique. Elle renvoie l'url sous la forme exemple : news-43-la-lune-est-belle.html ou encore sir $id n'est pas renseigné, on écrira simplement news-la-lune-est-belle.html
Elle enlève les caractères spéciaux ainsi que les entités html & cie..
function rw( $name_module, $id, $texte )
{
// Définition des caractères accentués
$car_speciaux = array( 'À', 'Á', 'Â', 'à', 'Ä', 'Å', 'Æ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'Ù', 'Ú', 'Û', 'Ü', 'ù', 'ú', 'û', 'ü', 'ß', 'Ç', 'ç', 'Ð', 'ð', 'Ñ', 'ñ', 'Þ', 'þ', 'Ý' );
// ... et de leurs "équivalents" non-accentués
$car_normaux = array( 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'B', 'C', 'c', 'D', 'd', 'N', 'n', 'P', 'p', 'Y' );
// On commence par supprimer les accents
$texte = str_replace($car_speciaux, $car_normaux, $texte);
// On supprime les entités html
$texte = strip_tags( $texte );
// On remplace les caractères non-alphanumériques par le séparateur $sep_mots
$texte = preg_replace( "/[^A-Za-z0-9]+/", "-", $texte );
// On supprime le séparateur s'il se trouve en début ou fin de chaîne
$texte = trim( $texte, "-" );
// On limite la chaine à un nombre maxi de caractères (ici 50 caractères)
$texte = substr( $texte, 0, 50 );
// On convertit le tout en minuscules
$texte = strtolower( $texte );
// On ajoute l'id à la fin pour avoir une url unique et on ajoute l'extension (ici .html)
$texte = "$name_module".($id>0 ? '-'.$id : '')."-$texte.html";
// On retourne le résultat
return ( $texte );
}