检测URL的“www”部分,无论是否包含“http://”

时间:2015-04-27 02:44:27

标签: php parsing url

我在暂存和生产服务器上有一个站点。暂存地址为“www-staging.example.com”,而制作只是“www.example.com”。

使用PHP,我需要能够检测到“www”部分,并检查它是否是“www-staging”。无论URL是否包含协议位“http://”,这也必须有效。

input: "www-staging.example.com" || "http://www-staging.example.com" || "https://www-staging.example.com" || www-staging.example.com/a/directory"

Expected Output: true.


input: "www.example.com" || "http://www.example.com" || "https://www.example.com" || example.com/a/directory

Expected Output: false.

我最初的方法是使用parse_url(),但这不会解析'www-'组件。

1 个答案:

答案 0 :(得分:0)

这似乎是......正则表达式(?:wo)?man!

的工作

嗯,在某些条件下。即:

  • 您的域名始终为example.com - 如果您需要跨多个站点,这将无效,但该功能并不难实现。

无论如何,这应该这样做:

preg_match('^(?:https?:\/\/)?www(?:-staging)?\.example\.com\/', $url)

当然,请将example\.com替换为您的实际域名,并将.转义为\.

如果您不想将该正则表达式放在另一个正则表达式中,并且不打算获取特定匹配项,则可以稍微简化一下:

preg_match('^(https?:\/\/)?www(-staging)?\.example\.com\/', $url)

它应该是一样的,虽然我太累了,没有经验丰富的PHP足以肯定地说。

Demo