2013-04-28 14 views
0

對於多語言域的preg_match我有以下URL字符串:提高子站點的語言

de.example.com 
it.example.com 
XX.example.com 

,只是:

example.com 

語言的代碼應該是2個字符[AZ]

所以我使用preg_match來比較字符串是否匹配:

'!^(.*).example.com$!' 

它與anylanguage.example.com匹配,但是隻有一個domain.com字符串有問題嗎?我該如何修改preg_match以適應兩種情況?謝謝!

回答

1

如果語言始終是2個英文字母:

'!^([a-z]{2})?\.?example\.com$!' 
+0

謝謝!它像一個魅力! – 2013-04-28 09:16:13

+0

@KenTang - 不要只是複製代碼而忘記它。嘗試使用它來學習;-) – 2013-04-28 10:04:41

1

點字符是在情況domain.com不匹配正則表達式。所以我只是將它修改爲以下格式:

'!^(.*)[\.]?domain.com$!' 
2
'!^(?:([a-z]{2})\.)?example\.com$!i' 

變化:

  • .意味着 「任何字符」,而不是 「點」
  • ?的意思是 「可選」
  • [a-z]表示「從a到z的任何字符」
  • {2}條是指「恰好兩個」
  • i標誌意思是「不區分大小寫」
  • (?:....)是一個非捕獲圖案
+0

太棒了,我不知道非捕獲模式'(?:....)'! – 2013-04-28 09:15:16