@ 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 — Проверяет, является ли указанный символ буквенно-цифровым
Описание
bool ctype_alnum
( string $text
)
Проверяет, все ли символы в переданной строке text являются буквенно-цифровыми. В стандартной локали C буквами являются только [A-Za-z].
Список параметров
- text
-
Проверяемая строка.
Возвращаемые значения
Возвращает TRUE, если каждый символ в строке text является либо буквой, либо цифрой, FALSE в противном случае.
Примеры
Пример #1 Пример использования ctype_alnum() (с использованием локали по умолчанию)
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo "Строка $testcase состоит только из букв и цифр.\n";
} else {
echo "Строка $testcase не состоит только из букв и цифр.\n";
}
}
?>
Результат выполнения данного примера:
Строка AbCd1zyZ9 состоит только из букв и цифр. Строка foo!#$bar не состоит только из букв и цифр.
ctype_alnum
kostromin at gmail com
26-Feb-2008 11:24
26-Feb-2008 11:24
ben at onshop dot co dot uk
13-Jan-2008 04:03
13-Jan-2008 04: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
13-Jan-2008 02:26
13-Jan-2008 02: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';
)
