我正在尝试编写一个php函数来检查一个变量只包含字母表中的字符,到目前为止我有以下代码:
if(!preg_match('/[a-z]/i', $name)){
$valid = FALSE;
}
如果要检查的字符串中没有字母字符,它只返回false ...我在这里做错了什么?
答案 0 :(得分:2)
您应该使用内置函数http://php.net/manual/en/function.ctype-alpha.php来实现此目的:
<?php
$strings = array('KjgWZC', 'arf12');
foreach ($strings as $testcase) {
if (ctype_alpha($testcase)) {
echo "The string $testcase consists of all letters.\n";
} else {
echo "The string $testcase does not consist of all letters.\n";
}
}
?>
以上示例将输出:
The string KjgWZC consists of all letters.
The string arf12 does not consist of all letters.
资料来源:PHP手册
答案 1 :(得分:1)
你忘记了行首(^)和行尾($)符号,你也忘记了量词(在这种情况下为+)。
您的正则表达式模式应如下所示:'/^[a-z]+$/i'
。
var_dump((bool)preg_match('/^[a-z]+$/i', 'foo')); //true
var_dump((bool)preg_match('/^[a-z]+$/i', 'foo1')); //false
var_dump((bool)preg_match('/^[a-z]+$/i', '123')); //false