我的目的是通过允许姓氏只包含字母或单引号来验证姓氏。 我不知道最快的方式是什么..可能是我想的正则表达式.. 无论如何,到目前为止,我有这个:
function check_surname($surname)
{
$c = str_split($surname,1);
$i = 0;
$test = 1; // Wrong surname
while($i < strlen($surname))
{
if(ctype_alpha($c[$i]) or $c[$i] == '\'')
{
$test = 0;
$i++;
}
else
{
return false;
}
}
}
我觉得这里出了点问题,但我看不出它在哪里。 谁能帮助我?
答案 0 :(得分:2)
评论中有一些很好的建议,我绝对同意@Cyclone你应该考虑变音符号(重音字母)。
幸运的是,PHP正则表达式支持Unicode类,因此这很容易做到。 Unicode包含任何字母的类L
(大写,小写,修改和标题大小写)。这将允许名称中的重音字母。
我还建议您允许破折号(Katherine Zeta-Jones)和空格(Guido van Rossum)。鉴于这一切,我将使用以下正则表达式:
preg_match("/^[\p{L} '-]+$/", lname);