regex alphanumérique+certains caractères

Répondre
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
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. :-/

@+...
savageman
savageman
Déconnecté
([^a-z0-9]|[\?!;_\s])

Ce masque irait-il?
Basherio
Basherio
Déconnecté
savageman on dirait que ça peut etre ça mais je croyait que l'espace était \t je me trompait :)
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Hello !

nan ça va pas ça me vire tout ce que je veut garder. :-/

@+...
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
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.
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
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).

@+...
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
$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.
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
Alors après testage :

  1. <?php
  2. $chaine = 'Asjklpqkéàjqsj^@ dhsqkdhq';  
  3. $chaine = preg_replace('`([^\w\s?!;_\-]+)`iS', '', $chaine);  
  4.  
  5. echo $chaine; // donne Asjklpqkéàjqsj dhsqkdhq
  6. ?> 


Avec ereg_replace => chaine de départ.
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Reuh ...

Merci m'sieur ! smiley

le ` il sert à quoi?

@+...
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
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.
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Reuh ...

oki ... merci beaucoup c'est nikel. smiley

@+...
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
basherio => \t c une tabulation, comme la dis zebden l'espace c'est \s
smiley
mojorisin
mojorisin
Déconnecté
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
salut,
ceci est un message personnel pour zebden :
Tu n'as pas besoin d'échapper le tiret dans une classe de caractère lors qu'il se trouve en dernier :)

A plus petit scarabée :p
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
On en apprend tous les jours avec ce mojo ^_^

Autant (ou au temps, le débat est lancé) pour moi, je pensais que justement il fallait le mettre impérativement en dernier (ou en premier) et qu'il fallait l'echapper :)
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique