0

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

  1. 子域可能存在或不存在(www.domain.com 或 domain.com)
  2. 我想获取完整的子域信息

例如,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)

关于如何做到这一点的任何提示?

4

2 回答 2

3

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

[www.]?

方括号内的字符列表表示只有一个匹配。这意味着要么w或点,而这太可选了,因为?

它应该是:

(www\.)?
于 2013-04-27T18:04:21.193 回答
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
于 2013-04-27T18:42:52.720 回答