2013-07-23 40 views
0

我有這個功能錯誤在PHP,當檢查郵件

function filtermail($email){ 
if(filter_var($email,FILTER_VALIDATE_EMAIL)){ 
    $mail2 = explode('www.',$email); 
    if(isset($mail2[1])){ 
     return 'false2'; 
    } 
    else{ 
     return true; 
    } 
} 
else{ 
    return false; 
} 
} 

但是當我給[email protected]
其返回「1」!
這個代碼運行

if($checkmail == 'false2'){ 
     echo 'ایمیل www ندارد.'; 
     die(); 
    } 

什麼是我的問題!

+0

你可以在這裏發佈你放到'$ checkmail'嗎? – DeiForm

+0

$ checkmail = filtermail('[email protected]'); –

+0

那麼,如果你把這個功能。它會返回TRUE,如果你用echo寫出它會輸出1.你能解釋一下你對這個函數的期望以及你需要什麼? – DeiForm

回答

1

對給定的電子郵件使用filter_var,您會收到您的電子郵件地址(Test here)。這應該導致您的第一個條件爲真。爆炸應該返回一個數組,其中1個元素在關鍵字0處。所以你的第二個條件結果爲false,所以else正在工作並返回true。

更新: 您的問題是$ checkmail被設置爲true,您的條件將一個bool值與一個字符串值進行比較,所以字符串值被轉換爲一個bool值,在這種情況下結果爲true。改變你的條件爲:if($ mailcheck ==='false2'){...

+0

在royta.ir上檢查它!它現在不工作 –

+0

使用strpos找到www會更好。在你的字符串中。所以需要爆炸來解析整個字符串,這需要更多的時間。 – butzi

+1

你的問題是$ checkmail被設置爲true,你的條件比較一個bool值和一個字符串值,所以字符串值被轉換爲一個bool值,在這種情況下結果爲true。 將您的條件更改爲: if($ mailcheck ==='false2'){... – butzi