regex alphanumérique+certains caractères

Répondre
i M@N
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.
Basherio
le 19/12/2005 à 02:17
Basherio
savageman on dirait que ça peut etre ça mais je croyait que l'espace était \t je me trompait :)
i M@N
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.
zebden
le 21/12/2005 à 11:39
zebden
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
i M@N
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.
zebden
le 21/12/2005 à 14:43
zebden
$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
zebden
le 21/12/2005 à 14:46
zebden
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
i M@N
le 21/12/2005 à 15:56
i M@N
Reuh ...

Merci m'sieur ! smiley

le ` il sert à quoi?

@+...
One Love, One Heart, One Unity.
zebden
le 21/12/2005 à 16:24
zebden
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
Répondre
LoadingChargement en cours