expression régulière

Petit nouveau ! | 1 Messages

30 sept. 2007, 16:40

Bonjour

pourquoi preg_match('[[:alpha:]]',$val);

me renvoi l'erreur

Compilation failed: POSIX named classes are supported only within a class at offset 0 in est_script.php on line 10


merci

ViPHP
ViPHP | 4039 Messages

30 sept. 2007, 17:58

Pourquoi deux paires de crochets ? Une suffit:
[:alpha:] (pour le posix), qui correspond à [a-zA-Z] en notation ascii (je préfère, perso).

Sous php, on doit fournir un caractère qui correspond au début du regex, qui doit être le même (le même, [ ≠ ] ), pour que php puisse s'y retrouver.

Classiquement, on propose le '/' , ce qui donnerait:

Code : Tout sélectionner

preg_match('/[:alpha:]/',$val)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 19672 Messages

30 sept. 2007, 18:27

C'est pas ça du tout : ton expression régulière devrait être encadrée de délimiteurs : il faut bien les doubles crochets pour les classes de caractères, mais dans ce cas, la paire extérieure est prise comme délimiteur et du coup il en manque une.

Essaye avec :
preg_match('#[[:alpha:]]#', $val);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 4039 Messages

30 sept. 2007, 19:21

moui, du coup, je me souviens pourquoi j'aime pas cette notation: c'est moche.

Ceci dit, je parlais bien des délimiteurs ^-^

dsl pour l'inattention. :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.