我正在尝试使用以下正则表达式从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
)
这是怎么回事?
你可以这样做:
preg_match("/[^.]+'.(?:it|com)$/", "www.domain.com", $matches);
print_r($matches);
/* output
Array
(
[0] => domain.com
)
*/
我想你想要域的最后两部分? 在 TLD 之前,不要只匹配任何字符:
"/(?:^|'.)([^'.]+?'.(?:it|com))$/"
(编辑:锚定到字符串的末尾,以修复评论中指出的错误。