Nettoyer une chaine de caractère

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


OTP
Modérateur
Modérateur
 
Messages: 12922
Inscription: Ven Déc 16, 2005 22:41

Nettoyer une chaine de caractère

Message le Sam Sep 08, 2007 7:22

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


bgdc
WRInaute passionné
WRInaute passionné
 
Messages: 657
Inscription: Lun Mai 23, 2005 20:51

Message le Sam Sep 08, 2007 7:40

Salut,

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

Code: Tout sélectionner
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));
}


OTP
Modérateur
Modérateur
 
Messages: 12922
Inscription: Ven Déc 16, 2005 22:41

Message le Sam Sep 08, 2007 7:56

Super !

Merci à toi !


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Sam Sep 08, 2007 9:22

string rawurlencode ( string $str )

Encode la chaîne fournie, en accord avec la » RFC 1738 (manuel PHP).


Koidirou
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mai 03, 2007 18:00

Message le Sam Sep 08, 2007 9:24

Celle-ci gère plus d'accents :

Code: Tout sélectionner
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


yazerty
WRInaute accro
WRInaute accro
 
Messages: 1682
Inscription: Dim Juin 19, 2005 19:47

Message le Sam Sep 08, 2007 9:25

("function viremerde" ;) :lol: )

J'utilise une fonction similaire à celle de bgdc mais j'ai ceci :
Code: Tout sélectionner
$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 ?


OTP
Modérateur
Modérateur
 
Messages: 12922
Inscription: Ven Déc 16, 2005 22:41

Message le Sam Sep 08, 2007 9:39

Merci à tous.


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 866
Inscription: Mar Aoû 05, 2003 14:49

Message le Sam Sep 08, 2007 9:48

yazerty a écrit:Le preg_replace est-il différent du ereg_replace("[^a-z0-9.] ? Lequel filtre le plus ?


je sais pas mais vaut mieux prendre l'habitude de coder en preg car ereg va disparaitre de php6...


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Jeu Oct 20, 2005 19:47

Message le Sam Sep 08, 2007 13:42

Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Sam Sep 08, 2007 13:48

Audiofeeline a écrit:Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...


ta idée du jeu de carateres speciaux qu'il existe sur la terre ? ben les concepteurs php non plus...


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Jeu Oct 20, 2005 19:47

Message le Sam Sep 08, 2007 13:53

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...


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Sam Sep 08, 2007 14:11

Audiofeeline a écrit:Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...


Qu'est-ce que vous reprochez à rawurlencode?


TEST:

<?php

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

$url = rawurlencode ( $str );

echo $url . "\n";

?>


Audiofeeline
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Jeu Oct 20, 2005 19:47

Message le Sam Sep 08, 2007 14:13

Ah! je connaissais pas !
Merci du tuyau !


mikaweb
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 206
Inscription: Mer Juil 04, 2007 20:57

Message le Sam Sep 08, 2007 14:41

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: Tout sélectionner
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:


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Sam Sep 08, 2007 15:26

Jeviensderio a écrit:
Audiofeeline a écrit:Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...


Qu'est-ce que vous reprochez à rawurlencode?



ca => %C0%C1%C2%C3%C4%C5%E0%E1%E2%E3%E4%E5%

Nettoyer une chaine de caractère

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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