Valider caractères spéciaux avec ereg

Ourson
Invité n'ayant pas de compte PHPfrance

15 oct. 2005, 19:12

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

Eléphant du PHP | 493 Messages

15 oct. 2005, 19:21

mais non !
if ( ! preg_match( '/^[\s]{1-100}$/i' // etc
beaucoup plus rapide :)

Mammouth du PHP | 19672 Messages

15 oct. 2005, 19:42

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: