本文实例讲述了PHP自定义函数获取URL中一级域名的方法。分享给大家供大家参考,具体如下:

<?php
/*
 * Created on 2016-8-23
 */
function regular_domain($domain)
{
  if (substr ( $domain, 0, 7 ) == "http://") {
    $domain = substr ( $domain, 7 );
  }
  if (strpos ( $domain, "/" ) !== false) {
    $domain = substr ( $domain, 0, strpos ( $domain, "/" ) );
  }
  return strtolower ( $domain );
}
function top_domain($domain) {
  $domain = regular_domain ( $domain );
  $iana_root = array (
      "ac",
      "ad",
      "ae",
      "aero",
      "af",
      "ag",
      "ai",
      "al",
      "am",
      "an",
      "ao",
      "aq",
      "ar",
      "arpa",
      "as",
      "asia",
      "at",
      "au",
      "aw",
      "ax",
      "az",
      "ba",
      "bb",
      "bd",
      "be",
      "bf",
      "bg",
      "bh",
      "bi",
      "biz",
      "bj",
      "bl",
      "bm",
      "bn",
      "bo",
      "bq",
      "br",
      "bs",
      "bt",
      "bv",
      "bw",
      "by",
      "bz",
      "ca",
      "cat",
      "cc",
      "cd",
      "cf",
      "cg",
      "ch",
      "ci",
      "ck",
      "cl",
      "cm",
      "cn",
      "co",
      "com",
      "coop",
      "cr",
      "cu",
      "cv",
      "cw",
      "cx",
      "cy",
      "cz",
      "de",
      "dj",
      "dk",
      "dm",
      "do",
      "dz",
      "ec",
      "edu",
      "ee",
      "eg",
      "eh",
      "er",
      "es",
      "et",
      "eu",
      "fi",
      "fj",
      "fk",
      "fm",
      "fo",
      "fr",
      "ga",
      "gb",
      "gd",
      "ge",
      "gf",
      "gg",
      "gh",
      "gi",
      "gl",
      "gm",
      "gn",
      "gov",
      "gp",
      "gq",
      "gr",
      "gs",
      "gt",
      "gu",
      "gw",
      "gy",
      "hk",
      "hm",
      "hn",
      "hr",
      "ht",
      "hu",
      "id",
      "ie",
      "il",
      "im",
      "in",
      "info",
      "int",
      "io",
      "iq",
      "ir",
      "is",
      "it",
      "je",
      "jm",
      "jo",
      "jobs",
      "jp",
      "ke",
      "kg",
      "kh",
      "ki",
      "km",
      "kn",
      "kp",
      "kr",
      "kw",
      "ky",
      "kz",
      "la",
      "lb",
      "lc",
      "li",
      "lk",
      "lr",
      "ls",
      "lt",
      "lu",
      "lv",
      "ly",
      "ma",
      "mc",
      "md",
      "me",
      "mf",
      "mg",
      "mh",
      "mil",
      "mk",
      "ml",
      "mm",
      "mn",
      "mo",
      "mobi",
      "mp",
      "mq",
      "mr",
      "ms",
      "mt",
      "mu",
      "museum",
      "mv",
      "mw",
      "mx",
      "my",
      "mz",
      "na",
      "name",
      "nc",
      "ne",
      "net",
      "nf",
      "ng",
      "ni",
      "nl",
      "no",
      "np",
      "nr",
      "nu",
      "nz",
      "om",
      "org",
      "pa",
      "pe",
      "pf",
      "pg",
      "ph",
      "pk",
      "pl",
      "pm",
      "pn",
      "pr",
      "pro",
      "ps",
      "pt",
      "pw",
      "py",
      "qa",
      "re",
      "ro",
      "rs",
      "ru",
      "rw",
      "sa",
      "sb",
      "sc",
      "sd",
      "se",
      "sg",
      "sh",
      "si",
      "sj",
      "sk",
      "sl",
      "sm",
      "sn",
      "so",
      "sr",
      "ss",
      "st",
      "su",
      "sv",
      "sx",
      "sy",
      "sz",
      "tc",
      "td",
      "tel",
      "tf",
      "tg",
      "th",
      "tj",
      "tk",
      "tl",
      "tm",
      "tn",
      "to",
      "tp",
      "tr",
      "travel",
      "tt",
      "tv",
      "tw",
      "tz",
      "ua",
      "ug",
      "uk",
      "um",
      "us",
      "uy",
      "uz",
      "va",
      "vc",
      "ve",
      "vg",
      "vi",
      "vn",
      "vu",
      "wf",
      "ws",
      "xxx",
      "ye",
      "yt",
      "za",
      "zm",
      "zw"
  );
  $sub_domain = explode ( ".", $domain );
  $top_domain = "";
  $top_domain_count = 0;
  for($i = count ( $sub_domain ) - 1; $i >= 0; $i --) {
    if ($i == 0) {
      // just in case of something like NAME.COM
      break;
    }
    if (in_array ( $sub_domain [$i], $iana_root )) {
      $top_domain_count ++;
      $top_domain = "." . $sub_domain [$i] . $top_domain;
      if ($top_domain_count >= 2) {
        break;
      }
    }
  }
  $top_domain = $sub_domain [count ( $sub_domain ) - $top_domain_count - 1] . $top_domain;
  return $top_domain;
}
echo top_domain("http://tools.jb51.net/");
?>

运行结果为:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。