RegEx,preg_match_all和过滤域

时间:2013-11-14 09:24:39

标签: php regex preg-match-all

几个小时后我试图骑上我的公平的一个剧本并最终准备就绪,但这很奇怪。

附上一段代码以了解我的意思。

$sep = '\.com|\.tv';
$string = 'sub.sub2.sub3.tv-bole-el.com';
$pat = '~[-[:alnum:]]{2,}\b('.$sep.')\b~i';

preg_match_all($pat, $string, $matches, PREG_PATTERN_ORDER);

在数组$匹配的情况下,如果你花费tv-bole-el.com

,这是正确的

相反,我获得了2个域名:

  • sub3.tv
  • -bole-el.com

任何人都知道哪里出错了?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您所需要的,但这对我有用:

$sep = '\.com|\.tv';
$string = 'sub.sub2.sub3.tv-bole-el.com';
$pat = '~[-[:alnum:]]{2,}\b('.$sep.')$~i';
preg_match_all($pat, $string, $matches, PREG_PATTERN_ORDER);

var_dump($matches[0]);

输出:

array(1) {
  [0]=>
  string(14) "tv-bole-el.com"
}