@ ben at onshop dot co dot uk
Your example is the slowest possible way to do it.
The whole idea behind using ctype_alnum is that it is much faster than a regexp.
If you have to use regexp, at least use PCRE, not POSIX.
ctype_alnum
(PHP 4 >= 4.0.4, PHP 5)
ctype_alnum — Vérifie qu'une chaîne est alphanumérique
Description
bool ctype_alnum
( string $text
)
ctype_alnum() vérifie si tous les caractères de la chaîne text sont des lettres et des chiffres. Elle retourne FALSE dans le cas contraire. En terme de langage C, les lettres sont [A-Za-z].
Liste de paramètres
- text
-
La chaîne testée.
Valeurs de retour
Retourne TRUE si tous les caractères de text sont soit des lettres, soit des chiffres, FALSE sinon.
Exemples
Exemple #1 Exemple avec ctype_alnum() (en utilisant les locales par défaut)
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo "La chaîne $testcase contient des chiffres ou des lettres.\n";
} else {
echo "La chaîne $testcase ne contient pas que des chiffres ou des lettres.\n";
}
}
?>
L'exemple ci-dessus va afficher :
La chaîne AbCd1zyZ9 contient des chiffres ou des lettres. La chaîne foo!#$bar ne contient pas que des chiffres ou des lettres.
ctype_alnum
kostromin at gmail com
26-Feb-2008 02:24
26-Feb-2008 02:24
ben at onshop dot co dot uk
12-Jan-2008 07:03
12-Jan-2008 07:03
Oops, above example should read:
if(eregi('[^a-zA-Z0-9_]', $str)){
$msg = 'Please enter an alphanumeric value';
)
ben at onshop dot co dot uk
12-Jan-2008 05:26
12-Jan-2008 05:26
An alternative if you need to accept underscores as well:
$str = 'user_name';
if(!eregi('[^a-zA-Z0-9_]', $str)){
$msg = 'Please enter an alphanumeric value';
)
