2012-03-11 90 views
0

所以我有這個基本的腳本:無法弄清楚如何使substr_compare正常工作(PHP)

/*check if email is valid*/ 
if (substr_compare ($email , '@' , 0)>0) 
{ 
/*put user to temporary database*/  
echo 'registration script'; 
}else{echo 'wrong mail';}; 

我想要做的就是我要檢查,如果字符串中包含符號「@」(如果郵件有效)。 但它不起作用: 當我將變量$ email設置爲'name'之類的東西時=該函數返回'1',但我認爲它應該返回0或-1,因爲該字母不在那裏。 我錯過了什麼?

+0

檢查@不是檢查好郵件的方法。正則表達式工作得更好;谷歌的「正則表達式電子郵件」,你會發現很多例子。 – 2012-03-11 07:23:47

回答

1

要檢查sctring 包含另一個子,你需要使用strpos(無法比擬的功能,如substr_compare):

if (strpos($email, '@') !== null) { ... } 

是的,你檢查電子郵件地址的方式是相當薄弱。使用正則表達式或內置在PHP filters

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { ... } 
1

你可以使用filter_var驗證郵件,這種方式更強大。

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    echo "This (email) email address is considered valid."; 
} else { 
    echo "wrong email"; 
} 
0

要檢查如果字符串包含「@」所輸入的電子郵件地址,您可以輕鬆地strpos功能可按檢查:

if (strpos($_POST['email'], '@') !== false) { 
    echo 'The email address has @ in it.'; 
} 

技術上,strpos()函數返回的第一個索引位置如果找到它,則指定子字符串的字符。如果它在字符串中查找子字符串失敗,它將返回布爾值false。由於可能子字符串可能在父字符串的最開始處開始,因此strpos()返回0,在PHP中將其解釋爲false,因此需要絕對比較!==。

相關問題