Persoonlijk zou ik het volgende doen, maar dit doet (bijna) hetzelfde als de match van NMe. Die van NMe kijkt of er karakters in de string voorkomen die NIET A-Za-z0-9 zijn. Die van mij kijkt of heel de string bestaat uit A-Za-z0-9.
Overigens is er een subtiel verschil. Mijn check laat geen lege strings door, die van NMe wel. Je kan dit gedrag wel wijzigen door van de + een * te maken. Dan zal deze check ook lege strings doorlaten. Ook zal die van mij bij een error in preg_match $error op true flaggen. De code van NMe zal dit niet doen.
PHP:
1
2
| if (!preg_match('^[A-Za-z0-9]+$', $str))
$error = true; |
De ^ en $ heb je nodig zodat je niet ergens een karakter midden in de string matched, maar heel de string. De + heb je nodig omdat je anders alleen een string met 1 karakter checked. Een + betekend 1 karater of meer van het voorgaande (en een * betekend 0 of meer van het voorgaande).
edit:
De oplossing van Bashrat is dus fout, want die mist de ^ en $
[
Voor 8% gewijzigd door
ShadowLord op 30-01-2006 22:54
]