PHP验证字符串轻量级

时间:2011-10-17 22:04:16

标签: php

我想找到最轻量级的解决方案,将字符串验证为a letter or number + ?。例如:a?1?等。

4 个答案:

答案 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%:)。