2015-06-06 49 views
1

所以我想从HTML表单中获取电子邮件地址。当我在PHP中收到电子邮件如何检查字符串中是否只允许特殊字符(@, _, -, and .)?例如:电子邮件输入!#[email protected]PHP只允许@,_, - 和。从输入

$input = !#[email protected]; 
if(check is only allowed chars in $input string){ 
    //there is only allowed and check is ok 
} else { 
    //there is not only allowed check and do something else 
} 
+3

为什么不能代替FILTER_VALIDATE_EMAIL? – mario

回答

-2

如果你只需要验证电子邮件,你有很多选择来验证它:

一个。使用HTML5输入字段进行电子邮件

<input type="email" name="email" /> 

b。 FILTER_VALIDATE_EMAIL

+1

如果选项a是用户友好的但不安全的验证,因为此验证是浏览器且容易绕过。由于这个原因,您应该始终验证serverside。 –

+0

使用HTML5“电子邮件”不是验证电子邮件的(单一)选项。数据应该始终在服务器端进行验证。 'Filter_validate_email'是做这件事最正确的功能。 – JayTaph

+1

我总是使用选项a,并且我搜索了选项b,现在我使用它们都是100%确定的谢谢。 – Flyer

-1

拳你找到的特殊字符存在的字符串,然后执行检查,只允许特定的字符

if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $input)) 
    { 

     if (strpos($input,'@') === true || strpos($input,'-') === true strpos($input,'_') === true strpos($input,'.') === true) { 

     // do something 

    } 
    } 
0
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) 
{ 
    $errors['email'] = 'This is not a valid email'; 
}