PHP验证字符串字符是英国或美国键盘字符

时间:2011-01-06 20:40:09

标签: php string validation

PHP验证true或false的最简单或最好的方法是,字符串只包含可以使用标准美国或英国键盘键入的字符,键盘语言设置为英国或美国英语?

更具体一点,我的意思是在使用或不使用shift键的情况下使用单键按键。

我认为这些人物如下。 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^& *()_- + = {[}] | \ :;“'<,>。?/£和Space

3 个答案:

答案 0 :(得分:4)

您可以按[ -~]覆盖每个ASCII字符(即从空格到波浪号的范围)。然后只需添加£即可(您可能需要添加其他字符,例如±§,但为此,请查看美国和英国键盘布局)。

类似的东西:

if(preg_match('#^[ -~£±§]*$#', $string)) {
    // valid
}

答案 1 :(得分:1)

以下正则表达式可能对您有用:

/^([a-zA-Z0-9!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m

将此用作:

$result = (bool)preg_match('/^([a-zA-Z0-9!"#$%&\'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m', $input);

或者从此代码创建可重用的函数:

function testUsUkKeyboard($input) 
{
    return (bool)preg_match('/^([a-zA-Z0-9!"#$%&\'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m', $input);
}

答案 2 :(得分:0)

更容易检查的方法是检查字符是否存在而不是它们,所以首先你需要一个不存在的字符列表,你可以从ascii范围128 - 255得到这些字符,其中0 - 127是常规键集。

Tio创建你可以做的无效数组:

$chars = range(128,255);

上面的数组将包含下表中的所有字符: alt text

然后你应该再次检查有问题的字符串,人们说使用正则表达式,但我真的不认为需要

$ string =“测试普通字符串”;

for($s=0;$s<strlen($string);$s++)
{
    if(in_array(ord($string[$s]),$chars))
    {
        //Invalid
    }
}