Page 1 sur 1

Valider caractères spéciaux avec ereg

Posté : 15 oct. 2005, 19:12
par Ourson
Bonjour,

Je voudrai valider un champ texte avec une expression régulière comme ereg.

Malheureusement, la variable de mon formulaire est convertie avec htmlentites pour des raisons de sécurité ainsi que de norme.

Or, une expression comme :
 if (! ereg("^[A-Za-z' éèêëàâîÏôûùü-]{1,100}$" //etc...
ne fonctionne pas, et ne comprend pas tous les caractères que je souhaite utiliser.

Je pense que c'est dû à mes caractères spéciaux, par exemple "é" vaut "é" sur ma page.

J'ai donc bidouillé le code suivant :
(!ereg("^[A-Za-z'([ÀÁÂÃÄÅÆÇÈÉ]|[ÊËÌÍÎÏÑÒÓÔ]|[ÕÖØÙÚÛÜßàá]
|[âãäåæçèéêë]|[ìíîïðñòóôõ]|[öùúûüÿŒœŸ]|
[ÀÁÀÃÄÅÆÇ
ÈÉ]|[ÊËÌÍÎÏ
ÑÒÓÔ]|[ÕÖØ
ÙÚÛÜßàá]
|[âãäåæçèé
êë]|[ìíîïñòó
ôõö]|[øùúûü
ÿŒœŸ-]) {1,100}$" //etc
(J'ai coupé l'instruction pour la mise en page sur ce forum. Naturellement, le code d'origine ne comporte pas de sauts de ligne).

J'ai doublé les lettres par leurs équivalents Html par acquit de conscience.

Le code semble fonctionner :lol:, mais je ne trouve pas ma programmation géniale même si elle a demandé patience et concentration.

Comment pourrai-je améliorer ma fonction ?

Merci pour vos avis.

Cordialement,

Ourson

Posté : 15 oct. 2005, 19:21
par Vaedan
mais non !
if ( ! preg_match( '/^[\s]{1-100}$/i' // etc
beaucoup plus rapide :)

Posté : 15 oct. 2005, 19:42
par Cyrano
Un autre formule consisterait à remettre le textes en caractères normaux le temps du test avec html_entity_decode() au lieu de construire une usine à gaz en expression régulière ;)