Php 改进子域语言的preg_匹配

Php 改进子域语言的preg_匹配,php,preg-match,Php,Preg Match,对于多语言域,我有以下url字符串: de.example.com it.example.com XX.example.com 只是: example.com 语言代码应为2个字符[a-z] 因此,我使用preg_match来比较字符串是否匹配: '!^(.*).example.com$!' 它与anylanguage.example.com匹配,但仅一个domain.com字符串有问题吗?如何修改preg_匹配以适应这两种情况?谢谢大家! 如果语言始终为两个字母: '!^([a-z]{2

对于多语言域,我有以下url字符串:

de.example.com
it.example.com
XX.example.com
只是:

example.com
语言代码应为2个字符[a-z]

因此,我使用preg_match来比较字符串是否匹配:

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

它与anylanguage.example.com匹配,但仅一个domain.com字符串有问题吗?如何修改preg_匹配以适应这两种情况?谢谢大家!

如果语言始终为两个字母:

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

如果语言始终为两个字母:

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

如果domain.com与正则表达式不匹配,则使用点字符。因此,我将仅将其修改为以下格式:

'!^(.*)[\.]?domain.com$!'

如果domain.com与正则表达式不匹配,则使用点字符。因此,我将仅将其修改为以下格式:

'!^(.*)[\.]?domain.com$!'
变化:

  • 表示“任意字符”,而不是“点”
  • 表示“可选”
  • [a-z]
    表示“从a到z的任意字符”
  • {2}
    表示“正好两个”
  • i
    标志表示“不区分大小写”
  • (?:…)
    是一种非捕获模式
变化:

  • 表示“任意字符”,而不是“点”
  • 表示“可选”
  • [a-z]
    表示“从a到z的任意字符”
  • {2}
    表示“正好两个”
  • i
    标志表示“不区分大小写”
  • (?:…)
    是一种非捕获模式

@KenTang-不要只是复制代码而忘记它。试着用它来学习;-)@肯唐-不要只是复制代码而忘记它。试着用它来学习;-)