Nettoyer une chaine de caractère

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par OTP, 8 Septembre 2007.

  1. OTP
    OTP WRInaute accro
    Inscrit:
    16 Décembre 2005
    Messages:
    14 582
    J'aime reçus:
    3
    Bonjour,

    Je sais que la question est courante mais je ne trouve pas, faute de connaissance des mots-clés...

    La question : comment "nettoyer" des chaines de caractères pour les insérer sans souci dans les URL ?

    (Virer espaces, accents et autres).

    Merci d'avance,

    Michaël
     
  2. bgdc
    bgdc WRInaute impliqué
    Inscrit:
    23 Mai 2005
    Messages:
    536
    J'aime reçus:
    0
    Salut,

    Ben moi j'ai recup cette fonction il y a un moment, et elle fonctionne correctement :

    Code:
    function viremerde($text) 
    {
      // Définition du séparateur
      $separator = "-";
    
      $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
      $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalent non accentué
    
      // Mise en minuscule + suppression des lettres accentuées par leur équivalent non accentué
      $text = strtr(strtolower($text),$tofind,$replac);
    
      // Remplacement de caractère non alphanumérique par un séparateur
      $text = ereg_replace("[^a-z0-9.]", $separator, $text);
    
      // Suppression des doubles séparateurs
      while (strstr($text, $separator . $separator))
        $text = str_replace($separator . $separator, $separator, $text);
    
      // Suppression du 1er caracterere s'il est egal au separateur
    	if (substr($text, 0, 1) == $separator)
    		$text = substr($text, 1);
    
      // Retour avec suppression d’un possible séparateur en fin de chaîne
      return(ereg_replace($separator . "$", "", $text));
    }
     
  3. OTP
    OTP WRInaute accro
    Inscrit:
    16 Décembre 2005
    Messages:
    14 582
    J'aime reçus:
    3
    Super !

    Merci à toi !
     
  4. Jeviensderio
    Jeviensderio WRInaute passionné
    Inscrit:
    29 Septembre 2006
    Messages:
    1 053
    J'aime reçus:
    0
    string rawurlencode ( string $str )

    Encode la chaîne fournie, en accord avec la » RFC 1738 (manuel PHP).
     
  5. Koidirou
    Koidirou Nouveau WRInaute
    Inscrit:
    3 Mai 2007
    Messages:
    48
    J'aime reçus:
    0
    Celle-ci gère plus d'accents :

    Code:
    function str2url($str)
    	{
    		if ($this->encoding == 'UTF-8') {
    			$str = $this->removeEntities(utf8_decode($str));
    		} else {
    			$str = $this->removeEntities($str);
    		}
    		
    		$str = strtr($str,
    		"ÀÁÂÃÄÅàáâãäåÇçÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûü¾ÝÿýÑñ",
    		"AAAAAAaaaaaaCcOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuYYyyNn");
    		
    		$str = str_replace('Æ','AE',$str);
    		$str = str_replace('æ','ae',$str);
    		$str = str_replace('¼','OE',$str);
    		$str = str_replace('½','oe',$str);
    		
    		$str = preg_replace('/[^a-z0-9_\s\'\:\/\[\]-]/','',strtolower($str));
    		
    		$str = preg_replace('/[\s\'\:\/\[\]-]+/',' ',trim($str));
    	
    		$res = str_replace(' ','-',$str);
    		
    		return $res;
    	}
    Elle provient de DotClear :
    https://svn.dotclear.net/1.0/trunk/inc/ ... s.blog.php
     
  6. yazerty
    yazerty WRInaute passionné
    Inscrit:
    19 Juin 2005
    Messages:
    1 230
    J'aime reçus:
    0
    ("function viremerde" ;) :lol: )

    J'utilise une fonction similaire à celle de bgdc mais j'ai ceci :
    Code:
    $title = strtr($title, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ -'/", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn----");
    $title = preg_replace('|\W|', '-', $title);
    Le preg_replace est-il différent du ereg_replace("[^a-z0-9.] ? Lequel filtre le plus ?
     
  7. OTP
    OTP WRInaute accro
    Inscrit:
    16 Décembre 2005
    Messages:
    14 582
    J'aime reçus:
    3
    Merci à tous.
     
  8. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    je sais pas mais vaut mieux prendre l'habitude de coder en preg car ereg va disparaitre de php6...
     
  9. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...
     
  10. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    ta idée du jeu de carateres speciaux qu'il existe sur la terre ? ben les concepteurs php non plus...
     
  11. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Oui bien sur mais je parle des caractères de base déjà, ceux qui son sur ton clavier Européen ! ;)
    Ce bout de code est utilisé régulièrement tout de même ?
    M'enfin, c'était une idée comme ça...
     
  12. Jeviensderio
    Jeviensderio WRInaute passionné
    Inscrit:
    29 Septembre 2006
    Messages:
    1 053
    J'aime reçus:
    0
    Qu'est-ce que vous reprochez à rawurlencode?


    TEST:

    <?php

    $str= "ÀÁÂÃÄÅàáâãäåÇçÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûü¾ÝÿýÑñ" .
    "AAAAAAaaaaaaCcOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuYYyyNnƼ½";

    $url = rawurlencode ( $str );

    echo $url . "\n";

    ?>
     
  13. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Ah! je connaissais pas !
    Merci du tuyau !
     
  14. mikaweb
    mikaweb WRInaute discret
    Inscrit:
    4 Juillet 2007
    Messages:
    160
    J'aime reçus:
    0
    Voila ce que j'utilise.
    Ca vient de phpbb seo à la base, j'ai modifié un tout petit truc pour qu'il soit compatible pour moi ;)

    Code:
    function format_url( $url, $type = '' ){
    	$url = preg_replace("`\[.*\]`U","",$url);
    	$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
    	$url = htmlentities($url, ENT_COMPAT);
    	$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
    	$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
    	$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
    	return $url;
    }
    C'est propre et rapide :roll:
     
  15. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    ca => %C0%C1%C2%C3%C4%C5%E0%E1%E2%E3%E4%E5%
     
  16. yazerty
    yazerty WRInaute passionné
    Inscrit:
    19 Juin 2005
    Messages:
    1 230
    J'aime reçus:
    0
    Je voulais tester, mais là du coup ça n'est plus très intéressant pour les urls...

    mikaweb > ton code est quand même un peu plus complexe que celui dont on parle, non ? A moins qu'il ne gère autre chose ?
     
  17. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81

    On peut aussi urlencode.. on a pas vraiment avancé, puis ces fonctions sont surtout utiliser pour des formulaires avec la methode GET et tres peut pour des urls courantes..

    le code de mikaweb fait ca :

    avant:
    C'est à propos de votre code de php
    apres:
    c-est-a-propos-de-votre-code-de-php
     
  18. yazerty
    yazerty WRInaute passionné
    Inscrit:
    19 Juin 2005
    Messages:
    1 230
    J'aime reçus:
    0
    Oki, donc ça fait la même chose que la ptite fonction que je me suis faite mais comme je ne maitrise pas les preg_replace je préfère garder la mienne (peut-être moins efficace en terme de performances serveur) :)...
     
Chargement...
Similar Threads - Nettoyer chaine caractère Forum Date
Nettoyer le BBcode d'une chaine de caractère Développement d'un site Web ou d'une appli mobile 7 Janvier 2010
Nettoyer une chaine par REGEX Développement d'un site Web ou d'une appli mobile 12 Octobre 2010
Nettoyer son cache navigateur Administration d'un site Web 15 Février 2020
Nettoyer les liens "pirates" de Google Débuter en référencement 21 Juin 2019
Nettoyer les 404s de bots près migration URL Rewriting et .htaccess 19 Mai 2018
Actions pour "nettoyer" un site...votre avis ? Problèmes de référencement spécifiques à vos sites 2 Janvier 2018
Nettoyer un fichier .htacces qui est trop gros URL Rewriting et .htaccess 18 Avril 2017
Nettoyer une base données MySQL Développement d'un site Web ou d'une appli mobile 13 Novembre 2014
Nettoyer un très grand nombre d'URL sortantes Développement d'un site Web ou d'une appli mobile 22 Mai 2014
nettoyer les différents avis Problèmes de référencement spécifiques à vos sites 2 Avril 2014
Nettoyer les liens sortant de mon site Débuter en référencement 16 Avril 2013
Nettoyer un numéro de téléphone avant INSERT Développement d'un site Web ou d'une appli mobile 17 Février 2012
Cherche à nettoyer ma BDD mysql Administration d'un site Web 2 Décembre 2011
Nettoyer les pages des résultats de Google Référencement Google 9 Juin 2011
nettoyer sa reputation comment faire? au secour!!!!! Le café de WebRankInfo 10 Janvier 2011
Nettoyer fichier avec regex Développement d'un site Web ou d'une appli mobile 24 Janvier 2010
Nettoyer un annuaire de ses 404 Développement d'un site Web ou d'une appli mobile 10 Décembre 2009
Nettoyer url .html%00%00%00 en .html ? URL Rewriting et .htaccess 8 Octobre 2009
nettoyer des URL de la base Google apres url rewriting Débuter en référencement 19 Janvier 2008
Commande php pour nettoyer du code html Développement d'un site Web ou d'une appli mobile 23 Février 2007