我认为мппм.рф
已经是UTF8,所以强制转换也无济于事。正则表达式是相当简单的,并且可以通过这样的替换:
function validateDomain($domain)
{
$parts = explode('.',$domain);
$name = array_shift($parts);
$extension = implode('.',$parts);
if ((strlen($name) >= 2) && (strlen($name) <= 100) &&
(strlen($extension) >= 2) && (strlen($extension) <= 24)) return $domain;
else return FALSE;
}
它会工作相同,而且对非AZ字符,它是当它使用正则表达式的情况下更容易理解。你可以把它稍微更加紧凑和有效的,这样做:
function validateDomain($domain)
{
$parts = explode('.',$domain);
$nameLen = strlen(array_shift($parts));
$extLen = strlen(implode('.',$parts));
if(($nameLen >= 2) && ($nameLen <= 100) &&
($extLen >= 2) && ($extLen <= 24)) return $domain;
else return FALSE;
}
你也可以使用多字节字符串函数是这样的:
function validateDomain($domain)
{
$point = mb_strpos($domain,'.');
$nameLen = mb_strlen(mb_substr($domain,0,$point));
$extLen = mb_strlen(mb_substr($domain,$point+1));
if(($nameLen >= 2) && ($nameLen <= 100) &&
($extLen >= 2) && ($extLen <= 24)) return $domain;
else return FALSE;
}
关闭问题有一个已关闭本身具有不可思议答案不是很好。我为Lawrence Cherone的行为道歉。但他已经有权关闭你的问题。 –