get last two segments of host name
preg_match("/([^\.\/]+)\.([^\.\/]+)$/", "www.php.net", $matches);
print_R($matches);//Array ( [0] => php.net [1] => php [2] => net ) 本人最近努力重学了一下正则,发现上面例子,怎么也看不明白,希望大家能简单讲解一下。

解决方案 »

  1.   

    $匹配字符串结束
    如果没有$,会匹配出www  php()里的匹配非.、/的一个及以上字符串
      

  2.   

    看了楼上各大虾的解释,算是比较了解了。题目的目的是得到域名的后两段
    但是不知道为什么要用([^\.\/]+) 非.或/ 一个或多个经过一天的努力终于把常用的正则看完了,以后看到正则没那么头疼了 heee
      

  3.   

    因为最后两段中间有个‘.’,而且有些url会在域名之后加上‘/’后面附带参数之类,所以要用.或者/来界定,即遇到这两个之一,匹配结束
    从而可以完成两次匹配,不过你这里有个‘$’,应该是取得纯域名,不加/才对,否则我感觉应该是在那里改为[\/$]才对