我在暂存和生产服务器上有一个站点。暂存地址为"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没有足够的经验,无法肯定地说。
演示。