Texte propre pour une url ?

degourdi
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 22 Fév 2007

Texte propre pour une url ?

Message le Sam Fév 24, 2007 13:20

Bonjour,

J'ai fais une fonction qui permet de dénuer une chaine de ses caractères spéciaux et autres caractères nuisibles lorsque l'on veut ajouter cette chaine dans une url.

Le problème c'est que ma fonction est vraiment longue et je me demande s'il existe un autre moyen (avec les expressions régulières par exemple) de raccourcir celle-ci :

Code: Tout sélectionner
function cleanStrForUrl($str)
{
    $str = trim($str);
     
    $str = str_replace(' ', '_', $str);
    $str = str_replace('\'', '_', $str);
    $str = str_replace('-', '_', $str);
    $str = str_replace('&', 'et', $str);
     
    $str = str_replace('Á', 'a', $str);
    $str = str_replace('á', 'a', $str);
    $str = str_replace('Â', 'a', $str);
    $str = str_replace('â', 'a', $str);
    $str = str_replace('Æ', 'ae', $str);
    $str = str_replace('æ', 'ae', $str);
    $str = str_replace('À', 'a', $str);
    $str = str_replace('à', 'a', $str);
    $str = str_replace('Å', 'a', $str);
    $str = str_replace('å', 'a', $str);
    $str = str_replace('Ã', 'a', $str);
    $str = str_replace('ã', 'a', $str);
    $str = str_replace('Ä', 'a', $str);
    $str = str_replace('ä', 'a', $str);

    $str = str_replace('Ç', 'c', $str);
    $str = str_replace('ç', 'c', $str);

    $str = str_replace('É', 'e', $str);
    $str = str_replace('é', 'e', $str);
    $str = str_replace('Ê', 'e', $str);
    $str = str_replace('ê', 'e', $str);
    $str = str_replace('È', 'e', $str);
    $str = str_replace('è', 'e', $str);
    $str = str_replace('Ë', 'e', $str);
    $str = str_replace('ë', 'e', $str);
    $str = str_replace('€', 'e', $str);
     
    $str = str_replace('Í', 'i', $str);
    $str = str_replace('í', 'i', $str);
    $str = str_replace('Î', 'i', $str);
    $str = str_replace('î', 'i', $str);
    $str = str_replace('¡', 'i', $str);
    $str = str_replace('Ì', 'i', $str);
    $str = str_replace('ì', 'i', $str);
    $str = str_replace('Ï', 'i', $str);
    $str = str_replace('ï', 'i', $str);
     
    $str = str_replace('Ñ', 'n', $str);
    $str = str_replace('ñ', 'n', $str);
     
    $str = str_replace('Ó', 'o', $str);
    $str = str_replace('ó', 'o', $str);
    $str = str_replace('Ô', 'o', $str);
    $str = str_replace('ô', 'o', $str);
    $str = str_replace('?', 'oe', $str);
    $str = str_replace('?', 'oe', $str);
    $str = str_replace('Ò', 'o', $str);
    $str = str_replace('ò', 'o', $str);
    $str = str_replace('Õ', 'o', $str);
    $str = str_replace('õ', 'o', $str);
    $str = str_replace('Ö', 'o', $str);
    $str = str_replace('ö', 'o', $str);
     
    $str = str_replace('?', 's', $str);
    $str = str_replace('?', 's', $str);
     
    $str = str_replace('Ú', 'u', $str);
    $str = str_replace('ú', 'u', $str);
    $str = str_replace('Û', 'u', $str);
    $str = str_replace('û', 'u', $str);
    $str = str_replace('Ù', 'u', $str);
    $str = str_replace('ù', 'u', $str);
    $str = str_replace('Ü', 'u', $str);
    $str = str_replace('ü', 'u', $str);
     
    $str = str_replace('Ý', 'y', $str);
    $str = str_replace('ý', 'y', $str);
    $str = str_replace('?', 'y', $str);
    $str = str_replace('ÿ', 'y', $str);
         
    $str = strtolower($str);
     
    $len = strlen($str);
     
    for ($i = 0; $i < $len; $i++)
    {
        if (!ereg('[-_0-9a-z]+', $str{$i}))
        {
            $str = str_replace($str{$i}, '', $str);
             
            $len = strlen($str);
        }
    }

     
    while(!ereg('[0-9a-z]+', $str{0}))
    {
        $str = substr($str, 1, $len);
    } 

    $len = strlen($str);
     
    while(!ereg('[0-9a-z]+', $str{$len-1}))
    {
        $str = substr($str, 0, $len-1);
         
        $len = strlen($str);
    }
     
    $str = str_replace('__', '_', $str);
     
    return $str;
}



Merci à vous.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19599
Inscription: 8 Aoû 2004

Message le Sam Fév 24, 2007 13:49

Code: Tout sélectionner
strtr($str,"ÀÁÂÃÄÅàáâãäåÇçÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
               "AAAAAAaaaaaaCcOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNn");
en ajoutant les codes qui t'intéressent :wink:

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Sam Fév 24, 2007 14:08

Code: Tout sélectionner
$array = array('à' => 'a', 'é' => 'e', 'è' => 'e');
strtr($str, $array);


Plus lisible :)


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Message le Sam Fév 24, 2007 14:33

kazhar a écrit:
Code: Tout sélectionner
$array = array('à' => 'a', 'é' => 'e', 'è' => 'e');
strtr($str, $array);


Plus lisible :)


Avec le retour à la ligne de leonick, c'est tout aussi lisible...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
  • Indice de densité
    Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités