2014-11-24 87 views
0

我想測試一個url中的語言匹配。PHP preg_match,檢查語言是否在url中定義

地址將是這樣的:http://www.domainname.com/en/#m=4&guid=%some_param%

我想檢查是否有在URL中現有的語言代碼。我在想這些東西線之間:

^(.*:)\/\/([a-z\-.]+)(:[0-9]+)?(.*)$

^(http|https:)\/\/([a-z\-.]+)(:[0-9]+)?(.*)$

我不是正則表達式如此激烈。任何人都可以幫助或指引我走向正確的方向嗎?

+0

什麼是現有語言代碼? – 2014-11-24 10:11:37

+0

@AvinashRaj這將是一個長長的清單,其中一些將是fi,sv,no,it等等。 – logixmeister 2014-11-24 10:13:10

+0

有幾種regxp在野外測試有效的語言標籤;例如http://schneegans.de/lv/或可能重複SO問題:http://stackoverflow.com/questions/3962543/how-can-i-validate-a-culture-code-with-a-regular-expression – feeela 2014-11-24 10:17:23

回答

1

如果你知道你的數據是測試一個簡單的網站是一個網址,那麼我不會打擾所有的url部分添加到正則表達式。保持簡單,如:/\/[a-z]{2}\//這需要兩個正斜槓之間的雙字母組合。如果需要捕獲語言代碼,則將其包裝在圓括號中:/\/([a-z]{2})\//

+0

謝謝這是迄今爲止最簡單的解決方案..我能夠在此模式上使用preg_match_filter來替換語言? – logixmeister 2014-11-24 11:01:50

+0

如果你想替換它,使用preg_replace像這樣:'$ result = preg_replace('/ \/[az] {2} \ //','/ en /',$ url)'這將代替語言代碼'en'。 – phansen 2014-11-24 11:46:58

+0

謝謝你真棒..不需要字符串函數 – logixmeister 2014-11-24 13:22:20