使用PHP正则表达式提取TLD

chu*_*uuk 2 php regex text-parsing

我有一个域名数组如下:

www.example.com
www.example.co.uk
Run Code Online (Sandbox Code Playgroud)

从中我想提取顶级顶级域名,这将导致(分别):

com
uk
Run Code Online (Sandbox Code Playgroud)

要在PHP中执行此操作,我使用正则表达式:

preg_match("`(?<=\.)\w+$`", $cc, $tld_array);
Run Code Online (Sandbox Code Playgroud)

这意味着匹配.域中的最后一个到字符串的结尾.我希望这能给我

com
uk
Run Code Online (Sandbox Code Playgroud)

如上所述,但仅收到

NULL
uk
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到为什么二级TLD正在工作而一级TLD没有?

RegExr建议他们也应该这样做:http://regexr.com?31gsg

Des*_*lak 13

您不必为所有内容使用正则表达式:-)一个不错的选择:

echo substr($domain, strrpos($domain, ".")+1);
Run Code Online (Sandbox Code Playgroud)

  • 不,那是如果我使用 strpos 而不是 strrpos。后一个函数从头到尾搜索,所以我的答案有效。 (2认同)