Optimiser un chaine pour la réécriture d'URL
Ce code est une petite fonction qui permet d'optimiser une chaine de caractère pour la placer dans une url, pour faire de la réécriture d'url (url rewriting) par exemple.
|
|
Code Source
Fonctions du code
: Renvoie une chaîne en minuscules - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Rechercher et remplacer par expression rationnelle standard - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
Commentaire
Salut,
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 );
}
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 );
}
Ajouter un commentaire
Librairie PHP
Connexion
Chaînes
PHP
- Affichage (5)
- Applications (9)
- Chaînes (71)
- Classes (29)
- Constantes (4)
- Cookies (3)
- Date-Heure (40)
- Email (14)
- Fichiers - Réps (45)
- Fonctions (23)
- Formulaires (18)
- GD-Graphiques (11)
- Google (13)
- HTML (7)
- Images (21)
- Inclassable (28)
- Maths (24)
- MySQL (23)
- Navigateurs (6)
- Recherches (6)
- Regex (13)
- Reseau (2)
- Sécurité (25)
- Sessions (13)
- Statistiques (5)
- Système (18)
- Tableaux (21)
- Tag-cloud (3)
- Templates (3)
- Twitter (5)
- URL (22)
- Variables (8)
- Vidéos (2)
- Windows (1)
- XML (2)
|
||























