我在暂存和生产服务器上有一个站点。暂存地址为“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-'组件。
答案 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足以肯定地说。