我希望限制用户不要添加一些流行的电子邮件服务提供商域名,如gmail.com,yahoo.com,ymail.com,hotmail.com
为此我创建了一个数组
$invalidDomain = ['gmail.com', 'yahoo.com', 'ymail.com', 'hotmail.com']
然后使用in_array检查用户输入
if(in_array($insertDomain, $invalidDomain)){
//restrict
}
但现在我还要查看gmail.co.in,hotmail.co.uk
我该怎么办?
答案 0 :(得分:2)
你可以使用正则表达式实现这一点 - 它会给你更多的灵活性,例如:如果你想排除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";
}
答案 1 :(得分:1)
使用此类代码
$invalidDomain = ['gmail', 'yahoo', 'ymail', 'hotmail']
最后处于条件
//$insertDomain = "gmail";
if(in_array($insertDomain, $invalidDomain)){
//restrict
}
答案 2 :(得分:0)
您可以使用PHP parse_url
来确定正在使用的域名http://php.net/manual/en/function.parse-url.php
输出数组将包含host
索引,该索引将为您提供在作为该函数的参数传递的字符串中使用的域/子域.i.e。
$partials = parse_url('https://google.com/?id=123');
$insertDomain = $partials['host']; // google.com