2015-04-27 44 views
1

我在分段和生產服務器上有一個站點。登臺地址是「www-staging.example.com」,而製作只是「www.example.com」。檢測URL的「www」部分,不管其中包含「http://」

使用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

你可以使用JavaScript代替嗎?然後,您可以將值發送到您的PHP腳本 –

+0

不,不幸的是,我不能。這發生在JS發送到頁面之前。 – Prefix

+0

如果缺少http://部分,請添加它,然後使用'parse_url' – Musa

回答

0

這似乎是一個工作......正則表達式(?:wo)?男人!

那麼,在某些條件下。即:

  • 您的域名永遠是example.com - 如果您需要跨越多個網站,這不起作用,但該功能並不難實現。

無論如何,這應該這樣做:

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

當然,用您的實際域名替換example\.com,與.轉義爲\.

如果你不希望把該正則表達式中的另一個,不要在得到具體的比賽計劃,你可以把它簡化一下:

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

它應該工作一樣,雖然我太累了,沒有足夠的經驗可以肯定地說。

Demo

相關問題