2017-09-02 33 views
0

我想使用preg_match和filter_var来检查表单条目。我创建了两个函数,当字段包含无效字符时应该返回false。对于用户名,无效字符将是数字和符号。我的功能有什么问题?如何使用preg_match和filter_var拒绝包含无效字符的条目?

用户名功能:

function verifyUsername($x){ 
    if (!preg_match('/[^a-z\s-]/i',$x)) { 
     return 0; 

    } 
    else { 
     return 1; 
    } 
} 

电子邮件地址的功能:

function verifyEmailAdd($x){ 
    if (!filter_var($emailadd, FILTER_VALIDATE_EMAIL)) { 
     return 0; 

    } 
    else { 
     return 1; 
    } 
} 

我呼吁他们想:

goodemail = verifyEmailAdd($emailAdd); 
gooduser = verifyUsername($userName); 

他们始终返回1

回答

0

在verifyEmailAdd开玩笑你有:

if (!filter_var($emailadd... 

但是在函数声明中你有$ x,所以$ emailadd在这个范围内是未定义的。

你会注意到它,如果你的error_reporting启用了 - 看到https://stackoverflow.com/a/5438125/4568686

第二件事 - 在verifyUsername功能,我不知道你所说的正则表达式的意思是什么,如果你想只接受字母字符, [^ az]应该足够了。

那么,在这里你去修改:

<?php 

function verifyUsername($x){ 
    if (preg_match('/[^a-z]/i',$x)) { 
     return 0; 
    } 
    else { 
     return 1; 
    } 
} 

function verifyEmailAdd($x){ 
    if (!filter_var($x, FILTER_VALIDATE_EMAIL)) { 
     return 0; 

    } 
    else { 
     return 1; 
    } 
} 

var_dump(verifyUsername("45wqadf")); 
var_dump(verifyUsername("wqadf")); 
var_dump(verifyEmailAdd("[email protected]&%")); 
var_dump(verifyEmailAdd("[email protected]")); 

你可以在这里进行测试:https://3v4l.org/kVDiK

相关问题