2010-10-04 5 views
0
$page = $_GET['page']; 
if(isset($page)) 
if(!preg_match('/[\w\d_]+/i', $page)) die("Error"); 

Je veux permettre Alphanum et UnderScore,question preg_match

ci-dessus code fonctionne mais laisse dire que je mets 123 ..., cela fonctionne aussi. Est-ce que preg_match ne va pas valider derrière l'entrée?

Répondre

2

Le regex correspondra tant qu'un alphanumérique apparaît comme une sous-chaîne de $page. Puisque 123... contient la sous-chaîne 123 il passera votre regex.

Utilisez

/^\w+$/ 

pour correspondre à la chaîne entière. (\w signifie déjà [a-zA-Z0-9_] que votre \d, _ et le modificateur i sont redondants.)

0

Vous devez utiliser des ancres comme:

/^\w+$/ 

\w a déjà \d et _

+0

Et '\ W' ne contient déjà des variantes en majuscules et minuscules. – Gumbo