Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 Laravel:检查电子邮件服务提供商域和it子域_Php_Laravel - Fatal编程技术网

Php Laravel:检查电子邮件服务提供商域和it子域

Php Laravel:检查电子邮件服务提供商域和it子域,php,laravel,Php,Laravel,我想限制用户不要添加一些流行的电子邮件服务提供商域名,如gmail.com、yahoo.com、ymail.com、hotmail.com 为此,我创建了一个数组 $invalidDomain = ['gmail.com', 'yahoo.com', 'ymail.com', 'hotmail.com'] 然后用in_数组检查用户输入 if(in_array($insertDomain, $invalidDomain)){ //restrict } 但现在我还想查看gmail.co.in,

我想限制用户不要添加一些流行的电子邮件服务提供商域名,如gmail.com、yahoo.com、ymail.com、hotmail.com

为此,我创建了一个数组

$invalidDomain = ['gmail.com', 'yahoo.com', 'ymail.com', 'hotmail.com']
然后用in_数组检查用户输入

if(in_array($insertDomain, $invalidDomain)){
 //restrict
}
但现在我还想查看gmail.co.in,hotmail.co.uk


我该怎么做?

您可以使用PHP的
解析url
来确定正在使用的域

输出数组将包含
host
索引,该索引将为您提供作为该函数参数传递的字符串中使用的域/子域

$partials = parse_url('https://google.com/?id=123');

$insertDomain = $partials['host']; // google.com

您可以使用PHP的
parse_url
来确定正在使用的域

输出数组将包含
host
索引,该索引将为您提供作为该函数参数传递的字符串中使用的域/子域

$partials = parse_url('https://google.com/?id=123');

$insertDomain = $partials['host']; // google.com

你可以使用正则表达式来实现这一点——这将给你更多的灵活性,例如:如果你想排除gmail.co.uk,但允许gmail.com。请参见下面的代码片段:

$insertDomain = "gmail.com";
$invalidDomain = ['gmail\.[a-zA-Z\.]{2,}', 'yahoo\.[a-zA-Z\.]{2,}', 'ymail\.[a-zA-Z\.]{2,}', 'hotmail\.[a-zA-Z\.]{2,}'];

// join regexp
if (preg_match('/^'.implode("$|^", $invalidDomain).'$/', $insertDomain)) {
    // restrict
    echo $insertDomain."\n";
}

你可以使用正则表达式来实现这一点——这将给你更多的灵活性,例如:如果你想排除gmail.co.uk,但允许gmail.com。请参见下面的代码片段:

$insertDomain = "gmail.com";
$invalidDomain = ['gmail\.[a-zA-Z\.]{2,}', 'yahoo\.[a-zA-Z\.]{2,}', 'ymail\.[a-zA-Z\.]{2,}', 'hotmail\.[a-zA-Z\.]{2,}'];

// join regexp
if (preg_match('/^'.implode("$|^", $invalidDomain).'$/', $insertDomain)) {
    // restrict
    echo $insertDomain."\n";
}
使用了这种类型的代码

$invalidDomain = ['gmail', 'yahoo', 'ymail', 'hotmail']
最后是在这种情况下

//$insertDomain = "gmail";

    if(in_array($insertDomain, $invalidDomain)){
     //restrict
    }
使用了这种类型的代码

$invalidDomain = ['gmail', 'yahoo', 'ymail', 'hotmail']
最后是在这种情况下

//$insertDomain = "gmail";

    if(in_array($insertDomain, $invalidDomain)){
     //restrict
    }


我想你应该使用这个
['gmail'、'yahoo'、'ymail'、'hotmail']
好的,然后我需要检查substr,对吗?使用PHP拆分函数拆分
$insertdomain
,如果我认为你理解我的观点,那么就使用它……是的。伟大的谢谢,我认为你应该使用这个
['gmail'、'yahoo'、'ymail'、'hotmail']
好的,那么我需要检查substr,对吗?使用PHP拆分函数拆分
$insertdomain
,如果我认为你理解我的观点,那么就使用它……是的。伟大的请返回以下内容:-数组:2[“path”=>““““query”=>“id=123”]您到底要将什么作为参数传递给它?这不一样-我的示例中有协议
https://
,它返回
array(4){[“scheme”]=>string(5)“https”[“host”]=>string(10)“google.com”[“path”=>string(1)/“[“query”]=>string(6)“id=123”}
parse-url返回这个:-数组:2[“path”=>““query”=>“id=123”]你到底把什么作为参数传递给它?它不一样-我的示例中有协议
https://
,它返回
array(4){[“scheme”]=>string(5)“https”[“host”=>string(10)“google.com”[“path”]=>string(1)“/”[“query”]=>string(6)“id=123”}
想要排除gmail.com和gmai.co.uk这两种进一步的解决方案吗?我认为代码满足您的需要。您还需要什么解决方案?我想排除gmail.com和gmail.co.uk。你的解决方案允许gmail.com更进一步想要排除gmail.com和gmai.co.uk这两种解决方案吗?我认为代码满足你的需要。您还需要什么解决方案?我想排除gmail.com和gmail.co.uk。您的解决方案允许gmail.com更进一步