字符串“Árvíztűrőtükörfúrógép”似乎无效。为什么呢?
if(isValid("Árvíztűrő tükörfúrógép",true,true))echo "VALID";else echo "INVALID";
function isValid($s, $abc=false, $accent=false, $numbers=false, $etc="")
{
$valid="";
if($abc)
$valid = "abcdefghijklmnopqrstzuvwxyz";
if($accent)
$valid .= "öüóűőúéáí";
if($numbers)
$valid .= "0123456789";
$valid .= $etc;
for($i=0; $i < mb_strlen($s); $i++){
$k = false;
for($j = 0; $j < mb_strlen($valid); $j++){
if(strtolower(mb_substr($s, $i, 1)) == mb_substr($valid, $j, 1))
$k = true;
}
if(!$k)
return false;
}
return true;
}
提前感谢您的帮助!
更新#1:
davebobak注意到小写Á不等于á,但为什么?
答案 0 :(得分:0)
您的测试字符串"Árvíztűrő tükörfúrógép"
包含空白(ő
和t
之间),这不在您的受限字符列表中。通过这个额外的空白扩展$valid
- $abc
的字符串,你应该没问题。
答案 1 :(得分:0)
strtolower()不能用于你的Á字符
在我的测试中,á不等于strtolower(“Á”)。
删除你的Á和空间(就像cars10所说的那样)并且它是有效的。