我想找到最轻量级的解决方案,将字符串验证为a letter or number
+ ?
。例如:a?
或1?
等。
答案 0 :(得分:4)
if (preg_match('/^[a-z0-9]\?$/', $str)) {
// yup, it's a letter or number + ?
}
答案 1 :(得分:1)
比正则表达式快一点是函数:
// return true or false
function validate($str) {
$str0 = ord($str[0]);
return(
(
($str0 >= 97 && $str0 <= 122) or
($str0 >= 48 && $str0 <= 57)
) &&
(
$str[1] == '?'
)
);
}
答案 2 :(得分:0)
前段时间,我编写了一个轻量级验证类。也许你可以使用它。
例如:
$oValidator = new Validator();
$oValidator->isValid('a', 'alpha_numeric|max_length[1]'); //true
$oValidator->isValid('1', 'alpha_numeric|max_length[1]'); //true
$oValidator->isValid('ab', 'alpha_numeric|max_length[1]'); //false
$oValidator->isValid('1337', 'alpha_numeric|max_length[1]'); //false
示例:强> http://sklueh.de/2012/09/lightweight-validator-in-php/
<强> github上:强> https://github.com/sklueh/Lightweight-PHP-Validator
答案 3 :(得分:-1)
确定这是最快的方式
$allowed_char = Array();
for($i=ord('a');$i<=ord('z');$i++) $allowed_char[chr($i)] = true;
for($i=ord('0');$i<=ord('9');$i++) $allowed_char[chr($i)] = true;
function validate($str) {
global $allowed_char;
return $allowed_char[$str[0]] && $str[1] == '?' && !isset($str[2]);
}
Regexp = 2.0147299766541s
此解决方案= 1.6041090488434s
所以它比Regexp解决方案快20%:)。