[PHP] Formater une chaîne pour une URL

28 Juin 2009  

 [PHP] Formater une chaîne pour une URL

Fonction qui "nettoyer" une chaîne de caractères pour une URL. Je l'utilise pour les identitfiants qui passent dans l'URL, du genre : portfolio.php?ref=identifiant-de-la-creation-12345.

Cette fonction est un mélange de deux fonctions d'autres programmeurs. Crédits : http://blog.darklg.fr/94/nettoyer-une-chaine-pour-une-url-en-php/ et http://fr2.php.net/manual/fr/function.strtr.php#85556 .

Contrairement à la fonction de Darklg, je ne supprime pas les traits-d'union de début et de fin de chaîne. C'est moche, mais c'est une liberté et une responsabilité que je laisse à l'utilisateur.
poujolrost-mathias 28 Juin 2009
# Catégorie Compatibilité Nombre de vues Site Archive
   Chaine PHP 4, PHP 5, PHP 7 9 758  

       Code Source PHP


 
 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    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
                               
<?php
/**************************************************************************************/
/*
     Titre  : [PHP] Formater une chaîne pour une URL                                                                      
                                                                                                                          
     URL    :  
     http://phpsources.org/code/php/chaine/519_php-formater-une-chaine-pour-une-url
     Auteur         : poujolrost-mathias                                                                                  
     Date edition   : 28 Juin 2009                                                                                        
*/
/**************************************************************************************/
/* préprare une chaine pour l'URL */
/* mélange de deux fonctions : */
/* source : http://blog.darklg.fr/94/nettoyer-une-chaine-pour-une-url-en-php/ */
/* et source : http://fr2.php.net/manual/fr/function.strtr.php#85556 */
function formatForUrl($texte)
{
    /* suppression des espaces en début et fin de chaîne*/
    $texte trim($texte);
 
    /* suppression des accents, tréma et cédilles + qlq autres car. spéciaux */
    $aremplacer 'ÀÁÂàÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ
    ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ&#340;&#341;';
    $enremplacement 'aaaaaaaceeeeiiiidnoooooouuuuy
    bsaaaaaaaceeeeiiiidnoooooouuuyybyrr';
    $texte utf8_decode($texte);    
    $texte strtr($texteutf8_decode($aremplacer), $enremplacement);
    /* mise en minuscule */
    $texte strtolower($texte);
    /* suppression des espaces et car. non-alphanumériques */
    $texte str_replace(" ",'-',$texte);
    $texte preg_replace('#([^a-z0-9-_])#','-',$texte);
    /* suppression des tirets multiples */
    $texte preg_replace('#([-]+)#','-',$texte);
/* ici vous pouvez couper les tirets de début et fin de chaine */
/* voir : http://blog.darklg.fr/94/nettoyer-une-chaine-pour-une-url-en-php/ */
    return $texte;
}
/* ***** ***** Comment l'utiliser dans un formulaire  ***** ***** */
/* Considérons l'extrait de formulaire XHTML ci-après. */
    /* si on a envoyé le formulaire */
    /* récupération */
    $ref trim($_POST['ref']);
        $refOrigine $ref// copie
    /* vérification basique */
    if (!isset($ref) || empty($ref)) 
    {
        echo "<p>Veuillez <a href=\"#f_ref\">définir une référence</a> en
        respectant le format demandé.</p>";
    }
    
    /* dans tous les cas, on formate */
    $ref clean_url($ref);
    
    /* et on compare avec la première version */
    if ($ref != $refOrigine
    { 
        echo "<p>La <a href=\"#f_ref\">référence</a> doit ne contenir
        que les 4 types de caractères autorisés :</p> 
        <ul>
                <li>caractère alphabétique en minuscule, </li> 
                <li>chiffre de 0 à 9, </li> 
                <li>tiret (aussi appelé &quot;trait d'union&quot;), </li>
                <li>underscore (aussi appelé &quot;tiret bas&quot;).</li> 
        </ul>\n<p>Votre référence a été modifié pour correspondre au format
        requis. Veuillez vérifier si elle vous convient.</p>"
    }
    /* on peut continuer à la manipuler... */
?>
<p id="f_ref"><label for="l_ref">
    <span>R&eacute;f&eacute;rence dans l'URL (unique, caractères
        <br />autorisés : <kbd>a-z</kbd>, <kbd>1-9</kbd>, <kbd>-</kbd>,
        <kbd>_</kbd>, <acronym title="maximum">max</acronym> 50 caractères,)
        <strong><abbr title="obligatoire">*</abbr></strong>
</span> <br />
    <input type="text" name="ref" value="<?php echo $ref?>" id="l_ref"
        size="40" maxlength="50" />
   </label>
</p> 

...  Manuel PHP - Fonctions du code source

   php.net  Description Versions PHP OUTIL
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7
   empty Détermine si une variable contient une valeur non nulle PHP 4, PHP 5, PHP 7
   isset Détermine si une variable est affectée PHP 4, PHP 5, PHP 7
   preg_replace Rechercher et remplacer par expression rationnelle standard PHP 4, PHP 5, PHP 7
   strtolower Renvoie une chaîne en minuscules PHP 4, PHP 5, PHP 7
   strtr Remplace des caractères dans une chaîne PHP 4, PHP 5, PHP 7
   str_replace Remplace toutes les occurrences dans une chaîne PHP 4, PHP 5, PHP 7
   trim PHP 4, PHP 5, PHP 7
   utf8_decode Convertit une chaîne UTF-8 en ISO-8859-1 PHP 4, PHP 5, PHP 7


  • L'ajout de commentaire est libre et ne demande pas d'inscription,
  •   invité

nous vous encourageons à contribuer à l'utilisation de PHP en ajoutant vos remarques.

[1]

  Chaines

Affichage des codes ASCII d'une chaine afficher la taille d'un fichier en Ko, Mo, Go, To, Po, Eo, Zo, Yo Ajouter des retours à la ligne à vos textes Arrondi une distance en mètre ou en kilomètre Avoir 10000 et afficher 10 000 à l'écran Avoir des liens et les emails cliquables dans un texte Avoir les initiales d'un nom et d'un prénom Baliser des mots dans une chaine Bannir les mots d'un texte C'est de l'UTF8 ou de l'ISO ? Cherche et trouve les mots trop long d'un texte Chercher des adresses emails dans un texte Colorisation de code php valide xhtml Comparer l'égalité entre 2 chaines Compter le nombre de caractères d'une chaîne. Compter le nombre de caractères que compte une chaîne Compter le nombre de mots ayant un certain caractère Compter le nombre de mots dans un string Contre les messages d'insulte Contrôle l'équilibre majuscules / minuscules et le pourcentage de majuscules Conversion ASCII en ANSI Conversion d'une chaîne en minuscules/majuscules Conversion d'URL relative en URL absolue Convertir un string en chaine de mots clés Convertit les majuscules et minuscules d'un texte au bon format. Coupe une chaine par séquences Coupe une phrase en mots Couper scinder un texte ligne par ligne Couper une chaine au n caractere et... Crypter et décrypter une chaine avec la fonction mcrypt_ecb Découpe de chaîne par mots maximum Détermine l'existence d'1 variable Enleve les espaces dans une chaine Enleve les n derniers caractere d'une chaine Exécute une chaîne comme un script PHP Exploser une chaîne en mots clés Extraire tous les mots d'une phrase Formate une liste en séparant les éléments par une "," et un "et" pour le dernier Générateur de mot de passe avec lettres + majuscules+ minuscules + nombres Générateur de tableau de code ASCII Générateur de tableau de codes Unicode Génération de mot de passe prononçable facile à retenir Générer une chaine de caractère unique et aléatoire Inclure des smileys dans vos textes La gestion des problèmes d'espace dans une chaine en PHP Mettre la première lettre d'une chaine en majuscule, en couleur et + si affinité Mot de passe aléatoire Mot de passe mnémotechnique Optimiser un chaine pour la réécriture d'URL Passer 1 texte en MAJUSCULES Passer la première lettre d'une chaine en majuscule Passer les caractères spéciaux dans une URL Passer toutes vos lettres en MAJUSCULE Passer une chaine dans un format de tableau Récupérer les liens ligne par ligne d'un textarea Remplace seulement la premiere occurence d'une chaine Remplace tous les accents par leur équivalent sans accent. Remplace une chaine ou un tableau dans une chaine Remplacer tout les caractères spéciaux par leur caractère correspondant string_split Suite de chiffres Supprime des tags dans une chaine Supprime les accents dans une chaine de caractère Supprime les caractères Supprime les lignes vident d'une chaine Supprime les sauts de lignes au début et à la fin d'un texte Supprimer l'extension d'un fichier Tag BBcode pour afficher des Codes sources en php Tronquer une chaine de caractères HTML Tronquer une chaîne de caractère trop longue. Tronquer une chaîne de caractères Trouver un caractère dans une chaine Vérifie le code postal canadien Vérifie les caractères invalides Vérifie si une chaine est alphanumérique Vérifie si votre chaine ne contient aucun caractere alphanumérique Vérifie si votre chaine ne contient aucun caractere numerique Vérifier qu'une chaine de caractère ne contient que des caractères alphabétique (ou alphanumérique) Vérifier si un mot de passe est valide Vérifier si une chaine de caractères contient un nombre hexadécimal   [PHP] Formater une chaîne pour une URL