PHP验证true或false的最简单或最好的方法是,字符串只包含可以使用标准美国或英国键盘键入的字符,键盘语言设置为英国或美国英语?
更具体一点,我的意思是在使用或不使用shift键的情况下使用单键按键。
我认为这些人物如下。 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^& *()_- + = {[}] | \ :;“'<,>。?/£和Space
答案 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);
上面的数组将包含下表中的所有字符:
然后你应该再次检查有问题的字符串,人们说使用正则表达式,但我真的不认为需要
$ string =“测试普通字符串”;
for($s=0;$s<strlen($string);$s++)
{
if(in_array(ord($string[$s]),$chars))
{
//Invalid
}
}