2017-09-02 32 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

相關問題