检测 URL "www"部分,而不考虑包含的"http://"



我在暂存和生产服务器上有一个站点。暂存地址为"www-staging.example.com",而生产地址仅为"www.example.com"。

使用PHP,我需要能够检测"www"部分,并检查它是否是"www-stageing"。无论 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-"组件。

似乎是一份工作...正则表达式(?:wo)?man!

好吧,在某些条件下。即:

  • 您的域始终example.com - 如果您需要跨多个站点使用它,这将不起作用,尽管该功能并不难实现。

无论如何,这应该做到:

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

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

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

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

它应该同样工作,尽管我太累了,而且对PHP没有足够的经验,无法肯定地说。

演示。

最新更新