2012-03-11 55 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,因此需要绝对比较!==。