begin process at 2012 05 31 18:34:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Texte propre pour une url ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Texte propre pour une url ?

samedi 24 février 2007 à 13:18:19 | Texte propre pour une url ?

porciner

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 :

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.
samedi 24 février 2007 à 14:16:45 | Re : Texte propre pour une url ?

vilhjalms

Saell og blesuð

voir urlencode()

Vilhjálms
Sigurðsdóttir aka Frëyjá
lundi 26 février 2007 à 14:45:36 | Re : Texte propre pour une url ?

christobal

Réponse acceptée !

Si j'ai bien compris, tu veux réécrire une chaine pour en faire une url propre ?
Si c'est le cas je te conseil d'utiliser ces trois fonction
$char = htmlentities(stripslashes(strtolower($chaine)),ENT_QUOTES) ;
+ str_replace.
Attention celas converti les lettres accentué et autre symbole. Donc revoi l'écriture de ton str_replace.
(&agrave; = a) et non (à = a)
de plus utilise un array plutôt que de faire autant de str_replace que du lettres

lundi 26 février 2007 à 16:24:19 | Re : Texte propre pour une url ?

vilhjalms

Saell og blesuð

Ouais enfin un urlencode() puis un urldecode() reste plus simple selon moi

cf la doc : http://fr.php.net/manual/fr/function.urlencode.php

Vilhjálms Sigurðsdóttir aka Frëyjá
lundi 26 février 2007 à 20:25:59 | Re : Texte propre pour une url ?

christobal

Ok mais quand tu regarde sa fonction, se qu'il cherche a faire c'est comme les urls de phpcs.
Alors que urlencode génére de nouveaux caracter comme le + pour les espaces et les pourcentage pour les caractere non alpha numerique.


Cette discussion est classée dans : replace, url, str, len, strlen


Répondre à ce message

Sujets en rapport avec ce message

str_replace et condition [ par christobal ] bonjour,je cherche via la fonction str_replace a rajouter au url d'un text le nom de domaine du site.Pour être plus clair, certains articles de mon si Acronymes dynamiques [ par crocxx2 ] Bonjours, je cherche à développer un systeme qui me permetré de géré les acronymes dynamiquement pour mon site, jusque la j'ai fait sa:    function Re "&" dans une expression régulière [ par Nitruk ] Bonjour, il semblerait que je rencontre un problème en essayant de trouver des url, ou plus précisment des balises "url" de BBcode.Pour adapter celles probleme avec la fonction str_replace [ par hajeur_abd ] bonjourj'ai récuperé le chemin d'acces d'un fichier dans une variable et je veu remplacer les anti-slash par des des slash.voila le code que j'ai tapé str_replace pour remplacer un div [ par 64nemesis ] Bonjour,je souhaiterai remplacer un div dans une page en fonction d'un parametre, ainsi est-il possible de faire:str_replace(" blah blah blah"," blah Comment mettre du texte en rouge dans un Flux RSS ? [ par fdiedler2000 ] Bonjour à tous, Non ma question n'est pas "Comment mettre du texte en rouge ?" J'ai crée mon propre flux Problème de code ,,, [ par thekid23 ] Salut, j'ai un problème ... Voici le code :$fichier = 'donnee/Regular Season Schedule.csv';if(file_exists($fichier)){$fp = fopen("$fichier", "r");  wh Autocomplétion et str_replace [ par shadow1779 ] Bonjour,je fais un systeme de recherche dans une base de donnée ou la page affiche au fur et a mesure que l'on tape son texte des resultats en rapport str_replace("'", """, $maChaine); [ par alonsyl ] bonjour, j'utilise 1 chaine de caractere pour generer du code HTML via PHP. j'ai donc des trucs du genre :$maChaine = "TEST";echo $maChaine;le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,616 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales