Nettoyer une chaine de caractère
18 messages
• Page 1 sur 2 • 1, 2
-

OTP - Modérateur

- Messages: 19532
- Inscription: 16 Déc 2005
Nettoyer une chaine de caractère
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
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 impliqué

- Messages: 723
- Inscription: 23 Mai 2005
Salut,
Ben moi j'ai recup cette fonction il y a un moment, et elle fonctionne correctement :
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));
}
-

Jeviensderio - WRInaute passionné

- Messages: 1340
- Inscription: 29 Sep 2006
string rawurlencode ( string $str )
Encode la chaîne fournie, en accord avec la » RFC 1738 (manuel PHP).
Encode la chaîne fournie, en accord avec la » RFC 1738 (manuel PHP).
-

Koidirou - WRInaute discret

- Messages: 52
- Inscription: 3 Mai 2007
Celle-ci gère plus d'accents :
Elle provient de DotClear :
https://svn.dotclear.net/1.0/trunk/inc/ ... s.blog.php
- 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 passionné

- Messages: 1682
- Inscription: 19 Juin 2005
("function viremerde"
)
J'utilise une fonction similaire à celle de bgdc mais j'ai ceci :
Le preg_replace est-il différent du ereg_replace("[^a-z0-9.] ? Lequel filtre le plus ?
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 ?
-

Audiofeeline - WRInaute accro

- Messages: 5257
- Inscription: 20 Oct 2005
Ca serait bien qu'ils ajoutent une fonction toute faite dans la prochaine version de PHP...
-

Audiofeeline - WRInaute accro

- Messages: 5257
- Inscription: 20 Oct 2005
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...
Ce bout de code est utilisé régulièrement tout de même ?
M'enfin, c'était une idée comme ça...
-

Jeviensderio - WRInaute passionné

- Messages: 1340
- Inscription: 29 Sep 2006
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

- Messages: 5257
- Inscription: 20 Oct 2005
Ah! je connaissais pas !
Merci du tuyau !
Merci du tuyau !
-

mikaweb - WRInaute discret

- Messages: 208
- Inscription: 4 Juil 2007
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
C'est propre et rapide
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
18 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Nettoyer le BBcode d'une chaine de caractère
- Nettoyer une chaine par REGEX
- detection de chaine de caractère
- eregi sur une chaine de caractère
- rewriting d'un nombre en chaine de caractère
- Contrôle d'une chaine de caractère en PHP ?
- convertir un nombre numerique en chaine de caractere
- Remplacé le premier caractère d'une chaine
- Php fonction sur chaine de caractere
- extraire variable indépendant dans chaine de caractere
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


