我正在尝试使用以下regexp从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
)
这有什么问题?
答案 0 :(得分:1)
你可以这样做:
preg_match("/[^.]+\.(?:it|com)$/", "www.domain.com", $matches);
print_r($matches);
/* output
Array
(
[0] => domain.com
)
*/
答案 1 :(得分:0)
我认为你想要域的最后两部分?在TLD之前,不要只匹配任何字符:
"/(?:^|\.)([^\.]+?\.(?:it|com))$/"
(编辑:锚定到字符串的末尾,修复注释中指出的bug。)