0

我正在尝试使用以下正则表达式从 http_host 获取域和 tld:

(?:^|\.)(.+?\.(?:it|com))

正则表达式在 gskinner.com 中正常工作。

输入:

domain.com
www.domain.com

捕获的两个组:

domain.com

但是在php中如下:

preg_match("/(?:^|\.)(.+?\.(?:it|com))/", "www.domain.com", $matches);
print_r($matches);

输出:

Array
(
    [0] => www.baloodealer.com
    [1] => www.baloodealer.com
)

这有什么问题?

4

2 回答 2

1

你可以这样做:

preg_match("/[^.]+\.(?:it|com)$/", "www.domain.com", $matches);
print_r($matches);

/* output
Array
(
    [0] => domain.com
)
*/
于 2013-11-08T21:21:48.497 回答
0

我想你想要域的最后两个部分?在 TLD 之前,不要只匹配任何字符:

"/(?:^|\.)([^\.]+?\.(?:it|com))$/"

(编辑:锚定到字符串的末尾,以修复评论中指出的错误。)

于 2013-11-08T21:19:01.843 回答