reg表达式:获取现有的子域名

时间:2013-04-27 17:59:56

标签: php regex

问题如下 - 我想从随机网址中获取子域名。

  1. 子域名可能存在与否(www.domain.com或domain.com)
  2. 我想获得完整的子域信息
  3. 例如,www.somesite.com会使用preg_match来获取带有

    的数组
    [0] = www.somesite.com
    [1] = www
    

    同样,域somesite.com会让我:

    [0] = somesite.com
    

    (并且不会[1]编入索引)

    我使用的是以下reg_exp:

    preg_match('/[www.]?([0-9A-Za-z-]+)'/', $_SERVER['SERVER_NAME'], $array);
    

    但对于www.somesite.com来说,它正在为我提供一个

    的数组
    [0] = www.somesite.com
    [1] = ww (the last w seems to be missing)
    

    有关如何完成此任务的任何提示?

2 个答案:

答案 0 :(得分:3)

我没有看过你的完整正则表达式,但这部分正则表达式肯定是个问题:

[www.]?

方括号内的字符列表表示只匹配一个字符。这意味着w或点,并且由于?

而太可选

应该是:

(www\.)?

答案 1 :(得分:1)

让你走上正轨的小贴士:

^(.+\.|)([^\.]+\.[^\.]+)$

应该给你

[0] = www.somesite.com
[1] = www.
[2] = somesite.com

[0] = www.another.somesite.com
[1] = www.another.
[2] = somesite.com

[0] = somesite.com
[1] = 
[2] = somesite.com