Page 1 sur 1

expression régulière

Posté : 30 sept. 2007, 16:40
par mosto
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

Posté : 30 sept. 2007, 17:58
par Berzemus
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)

Posté : 30 sept. 2007, 18:27
par Cyrano
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);

Posté : 30 sept. 2007, 19:21
par Berzemus
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: