Vous êtes ici Codes PHP et MySQL > Chaînes > [PHP] Formater une chaîne pour une URL

 

[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
Site de l'auteur voir
[14] sources en PHP voir
Code vu 4592 fois
Enregistré le 28 Juin 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute [PHP] Formater une chaîne pour une URL
  • Partage ce code sur Facebook
 
 
 
 

Code Source


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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : [PHP] Formater une chaîne pour une URL                    */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts519-PHP.htm              */
/* Auteur         : poujolrost-mathias                                        */
/* Date édition   : 28 Juin 2009                                              */
/* Website auteur : http://site.mathiaspoujolrost.net/competences/            */
/*                                                                            */
/******************************************************************************/

/* 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> 
 

Fonctions du code

: - (PHP 4, PHP 5)
: Convertit une chaîne UTF-8 en ISO-8859-1 - (PHP 4, PHP 5)
: Remplace des caractères dans une chaîne - (PHP 4, PHP 5)
: Renvoie une chaîne en minuscules - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: Rechercher et remplacer par expression rationnelle standard - (PHP 4, PHP 5)
: Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
Commentaire
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Chaînes

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité