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 | | 50 | | 51 | |
|
<?php
| /*---------------------------------------------------------------*/
| /*
| Titre : Optimiser une chaine pour la réécriture d'URL
|
| URL : https://phpsources.net/code_s.php?id=345
| Auteur : crocxx
| Date édition : 22 Fév 2008
| Date mise à 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)
| {
| $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(preg_match('#--#',$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 );
}