regex alphanumérique+certains caractères
le 16/12/2005 à 21:28
i M@N
Hello !
Je cherche à faire une regex pour filtrer certains caractères.
je voudrais faire un masque qui remplace par un - tout ce qui N'EST PAS :
-alphanumérique [^a-zA-Z0-9]
-les caractères ? ! ; _
-les espaces.
Ben j'y arrive pas ... j'avais un truc cet aprèm et en essayant de l'améliorer je l'ai perdu et impossible de le refaire. :-/
@+...
One Love, One Heart, One Unity.
([^a-z0-9]|[\?!;_\s])
Ce masque irait-il?
savageman on dirait que ça peut etre ça mais je croyait que l'espace était \t je me trompait :)
le 20/12/2005 à 19:09
i M@N
Hello !
nan ça va pas ça me vire tout ce que je veut garder. :-/
@+...
One Love, One Heart, One Unity.
tieng,
$chaine = preg_replace('`([^\w\s?!;_\-]+)`iS', '', $chaine);
J'ai rajouté les tirets ^^
Pour préciser les tirets se mettent toujours au début du masque ou à la fin, en l'echappant.
zebdinou pour les intimes / Blog : http://www.zebden.fr
le 21/12/2005 à 14:37
i M@N
Hello !
Merci Zebden, ton masque ne me garde que les ?!;_ et - ... je voulais aussi les caractères alphanumériques donc j'ai remplacé par [^?!$a-zA-Z0-9 @.âäàéèêëîï;_-] et ça a l'air de le faire (par contre les caractères d'échappement apparement y'en a pas besoin : ça vire ce qui est échappé sinon).
@+...
One Love, One Heart, One Unity.
$chaine = preg_replace('`([^\w\s?!;_\-]+)`iS', '', $chaine); // Tester et approuver avec PCRE by zebden 2005 corpo !
\w : Tout caractère alphanuméric comprenant les accent.
\s : Espace.
les autres sont les caractères normaux.
le + de 1 à n carcatères.
Alors ca marche probablement pas avec ereg .. mais la je suis pas sur.
P.S edit : Pour le caractère echapé, je parlais seulement du tiret. \w et \s sont des masques prédifinis dans la synthaxe perl.
Re P.S edit : Tiret seul caractère spécial entre crochet en fait (a-z par exemple) donc pour les différencier, il faut l'echapper.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Alors après testage :
<?php
$chaine = 'Asjklpqkéàjqsj^@ dhsqkdhq';
$chaine = preg_replace('`([^\w\s?!;_\-]+)`iS', '', $chaine);
echo $chaine; // donne Asjklpqkéàjqsj dhsqkdhq
?>
Avec ereg_replace => chaine de départ.
zebdinou pour les intimes / Blog : http://www.zebden.fr
le 21/12/2005 à 15:56
i M@N
Reuh ...
Merci m'sieur !
le ` il sert à quoi?
@+...
One Love, One Heart, One Unity.
Il faut délimiter ton masque dans la Syntaxe PCRE, alors moi je le délimite avec `` mais tu peux aussi délimiter avec # ou avec d'autres.
Alors tu me diras quelle est l'utilité, je sais pas trop mais c'est surement pour pouvoir caser des paramètres comme ici `masque`iS ou i veut dire insensible à la casse et S pour optimiser.
zebdinou pour les intimes / Blog : http://www.zebden.fr