无法弄清楚如何使substr_compare正常工作(PHP)

时间:2012-03-11 07:12:42

标签: php html

所以我有这个基本的脚本:

/*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,因为字母不在那里。 我错过了什么?

3 个答案:

答案 0 :(得分:1)

要检查sctring 是否包含另一个子字符串,您需要使用strpos(而不是比较substr_compare之类的函数):

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

是的,您检查电子邮件地址的方式相当薄弱。使用正则表达式或内置PHP filters,如

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

答案 1 :(得分:1)

您可以使用filter_var来验证电子邮件,这种方式更加强大。

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

答案 2 :(得分:0)

要检查输入的电子邮件地址中的字符串是否包含“@”,您可以使用strpos funciton轻松查看:

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

从技术上讲,strpos()函数返回指定子字符串的第一个字符的索引位置(如果找到它)。如果在字符串中找不到子字符串失败,则返回布尔值false。因为子字符串可能在父字符串的最开头开始,因此strpos()返回0,在PHP中被解释为false,绝对比较!==是必需的。