Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中用于电子邮件检查功能的通配符_Php_Email_Wildcard - Fatal编程技术网

php中用于电子邮件检查功能的通配符

php中用于电子邮件检查功能的通配符,php,email,wildcard,Php,Email,Wildcard,我目前正在我的本地机器上开发登录和注册系统,以进行测试,现在,我正处于电子邮件检查功能的阶段。正如您所知,您可以使用php内置函数来实现这一点,但这并不是100%正确的。另外,我只希望@gmail.com、@hotmail.*、@yahoo.*和类似的电子邮件被接受,而不是其他邮件(如@somemail.net) 所以我想开发如下代码: <? ... require_once 'emailformcheck.php'; if ($email === '

我目前正在我的本地机器上开发登录和注册系统,以进行测试,现在,我正处于电子邮件检查功能的阶段。正如您所知,您可以使用php内置函数来实现这一点,但这并不是100%正确的。另外,我只希望@gmail.com、@hotmail.*、@yahoo.*和类似的电子邮件被接受,而不是其他邮件(如@somemail.net)

所以我想开发如下代码:

    <?

    ...

    require_once 'emailformcheck.php';

    if ($email === '@gmail.com' || $email === '@yahoo.com'...) {

        require_once 'emaildbcheck.php';

        require_once 'passwordchecker.php';

}

...

?>

但我不想键入@gmail.com或@yahoo.*,而是想使用一些通配符,比如:


*@gmail.com或*@yahoo.com。谁能告诉我我需要如何格式化它吗?事实上,我对php编程并不陌生,但我仍然在学习。有人知道用什么通配符来替换php文件中的字符串数据吗?

使用
正则表达式来搜索字符串中的这种模式。PHP带来了
preg
扩展。它有很好的文档记录,因此我建议您查看一下,以及您在web上找到的数百万个示例:

使用它,您可以编写条件语句,如下所示:

if ( preg_match($email, '^[^@]+@((gmail\.com)|(yahoo\.com))$') )

使用
正则表达式
在字符串中进行此类模式搜索。PHP带来了
preg
扩展。它有很好的文档记录,因此我建议您查看一下,以及您在web上找到的数百万个示例:

使用它,您可以编写条件语句,如下所示:

if ( preg_match($email, '^[^@]+@((gmail\.com)|(yahoo\.com))$') )

首先运行此功能检查电子邮件是否有效:

$isValid = filter_var($email, FILTER_VALIDATE_EMAIL);
然后,要检查域,请运行以下命令:

list ($user, $domain) = explode('@', $email);
list ($domain, $tld) = explode('.', $domain);
如果$user包含@之前的数据,则域包含TLD之外的域(例如
gmail
),而$TLD包含TLD的第一部分(例如
com

然后,您可以使用以下条件检查gmail.com:

if($domain == "gmail" && $tld == "com")
要检查hotmail等通配符,请使用:

if($domain == "hotmail")

显然,使用通配符,您将遇到子域问题,例如有人创建域:
hotmail.mywebsite.com
,并且他们的电子邮件是
myname@hotmail.mywebsite.com

首先运行此功能检查电子邮件是否有效:

$isValid = filter_var($email, FILTER_VALIDATE_EMAIL);
然后,要检查域,请运行以下命令:

list ($user, $domain) = explode('@', $email);
list ($domain, $tld) = explode('.', $domain);
如果$user包含@之前的数据,则域包含TLD之外的域(例如
gmail
),而$TLD包含TLD的第一部分(例如
com

然后,您可以使用以下条件检查gmail.com:

if($domain == "gmail" && $tld == "com")
要检查hotmail等通配符,请使用:

if($domain == "hotmail")

显然,使用通配符,您将遇到子域问题,例如有人创建域:
hotmail.mywebsite.com
,并且他们的电子邮件是
myname@hotmail.mywebsite.com

您正在寻找php中的
正则表达式
和preg扩展。它们在字符串中实现模式搜索。阅读文档,这篇文章描述得很好,已经回答了一百万次。出于好奇:为什么要限制潜在用户选择的电子邮件服务提供商的注册/登录?!?您正在寻找php中的
正则表达式和preg扩展。它们在字符串中实现模式搜索。阅读文档,这篇文章描述得很好,已经回答了一百万次。出于好奇:为什么要限制潜在用户选择的电子邮件服务提供商的注册/登录?!?哇,谢谢。是的,这可能是我要找的东西。编辑很少,最终可能会很棒。谢谢!哇,谢谢。是的,这可能是我要找的东西。编辑很少,最终可能会很棒。谢谢!