PHP 中的正则表达式规则用于检查任何子域



我正在尝试使用正则表达式检查或验证子域/域,请检查这是我想要的:

if($_SERVER['HTTP_ORIGIN'] == "^(.*.?domain.com)$"){
   header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
}

因此,如果子域是:es.domain.com、en.domain.com、etc.domain.com、domain.ws test.com,那么我可以打印标头策略。

更多解释:我有几个子域(大约 40 个)和另外两个域(总共 3 个域),我需要知道 $_SERVER['HTTP_ORIGIN'] 是否等于这个域或子域之一,如果是 equeal,那么我打印标头策略。

我想用正则表达式来做到这一点,因为如果我将子域/域放在列表中,这将太长了。有什么帮助吗?

简历:我有三个域:domain.com,domain.ws 和 test.com(每个域的子域),我想通过此验证。

好吧,PHP 具有用于正则表达式的preg_*函数。在您的情况下:

if(preg_match('/^(?:.+.)?domain.com$/', $_SERVER['HTTP_ORIGIN']))

如果您想更具体地了解允许的域和子域(允许任意组合 - 我假设二级域是别名):

if(preg_match('/^(?:(?:es|en|etc).)?(?:domain.com|domain.ws|test.com)$/', $_SERVER['HTTP_ORIGIN']))

将允许使用您提到的任何主机名。

或者,您可以允许任何子域和域,捕获它们,然后检查它们。假设您有一个允许的子域数组和一个允许的二级域数组。

preg_match('/^(?:(.+).)?([^.]+.[^.]+)$/', $_SERVER['HTTP_ORIGIN'], $matches);
$subdomain = $matches[1];
$domain = $matches[2];
if((!$subdomain || in_array($subdomain, $subdomainArray)) &&
   in_array($domain, $domainArray))
{
    ...
}

preg_match文档。

试试这个

preg_match("/".addcslashes($_SERVER["DOCUMENT_ROOT"],"/")."/(w+)//",$_SERVER["SCRIPT_FILENAME"],$d);
$sub = $d[1];

相关内容

  • 没有找到相关文章

最新更新