| |
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 47 48 49
<?php
/*------------------------------*/
/*
Titre : Optimiser une chaine pour la réécriture d'URL
Auteur : crocxx
Date édition : 22 Fev 2008
Date mise a jour : 09 Aout 2019
Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
- correction du code
- amélioration du code
- modification de la description
*/
/*------------------------------*/
function OptimiseUrl($chaine)
{
$accents = Array("/é/", "/è/", "/ê/", "/à §/", "/à  /",
"/à ¢/", "/à ®/", "/à ¯/","/à ¹/", "/à ´/");
$sans = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o");
$entre = array(' ','?', '!', '.', ',', ':', "'", '&', '(', ')','"','/');
$sortie = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-');
$modifchaine=true;
while($modifchaine==true)
{
$modifchaine=false;
{
$modifchaine=true;
}
}
return $chaine;
}
?>
<?php
/*------------------------------*/
/*
Titre : Optimiser une chaine pour la réécriture d'URL
Auteur : crocxx
Date édition : 22 Fev 2008
Date mise a jour : 09 Aout 2019
Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
- correction du code
- amélioration du code
- modification de la description
*/
/*------------------------------*/
function OptimiseUrl($chaine)
{
$accents = Array("/é/", "/è/", "/ê/", "/à §/", "/à  /",
"/à ¢/", "/à ®/", "/à ¯/","/à ¹/", "/à ´/");
$sans = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o");
$entre = array(' ','?', '!', '.', ',', ':', "'", '&', '(', ')','"','/');
$sortie = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-');
$modifchaine=true;
while($modifchaine==true)
{
$modifchaine=false;
{
$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 );
}