php - 获取没有 TLD 的域名

标签 php preg-match

我这里有这个代码:

    // get host name from URL
    preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.joomla.subdomain.php.net/index.html", $matches);
    $host = $matches[1];

    // get last two segments of host name
    preg_match('/[^.]+\.[^.]+$/', $host, $matches);
    echo "domain name is: {$matches[0]}\n";

输出将为 php.net
我只需要 php没有 .net

最佳答案

虽然这里的正则表达式很好,但我推荐 parse_url

$host = parse_url('http://www.joomla.subdomain.php.net/index.html', PHP_URL_HOST);
$domains = explode('.', $host);
echo $domains[count($domains)-2];
这适用于 .com、.org、.net 等 TLD,但不适用于 .co.uk 或 .com.mx。您需要更多的逻辑(很可能是一组 tld)来解析它们。

关于php - 获取没有 TLD 的域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760797/

相关文章:

php - 如何检查是否在 php 中启用了 mod_rewrite?

php - Mysql跨表查找

php - 在相同的 css 类中显示相同页面的错误消息

Javascript 匹配在 IE 中不起作用

php - 正则表达式错误 preg_replace_callback() : Unknown modifier '.' in

php - 为 PHP Web 应用构建系统

PHP POST + iOS Swift 错误

php - 在 UTF8 单词之间插入空格 - 我的 2 个简单正则表达式有什么问题?

regex - 如何使用正则表达式匹配字符串中的前一个字符

php - 我缺少什么? SQL注入(inject)