我正在尝试编写(或只是找到一个现有的)PHP方法,该方法可以获取链接并提取网址。诀窍是,它需要保持在奇怪的领域的重压,如:
www.champa.kku.ac.th
用人眼看着这个,我仍然猜错了:认为域名是kku.ac.th
但是访问时会出现dns错误。
所以任何人都知道从url可靠地提取域名的好方法:
http://site.com/hello.php
http://site.com.uk/hello.php
http://subdomain.site.com/hello.php
http://subdomain.site.com.uk/hello.php
http://www.champa.kku.ac.th/hello.php // and even the one I couldn't tell
答案 0 :(得分:6)
也许 parse_url
功能可以提供帮助吗?
在您的情况下,使用这些URL,代码的以下部分:
echo parse_url('http://site.com/hello.php', PHP_URL_HOST) . '<br />';
echo parse_url('http://site.com.uk/hello.php', PHP_URL_HOST) . '<br />';
echo parse_url('http://subdomain.site.com/hello.php', PHP_URL_HOST) . '<br />';
echo parse_url('http://subdomain.site.com.uk/hello.php', PHP_URL_HOST) . '<br />';
echo parse_url('http://www.champa.kku.ac.th/hello.php', PHP_URL_HOST) . '<br />';
给出这个输出:
site.com
site.com.uk
subdomain.site.com
subdomain.site.com.uk
www.champa.kku.ac.th
答案 1 :(得分:6)
PHP具有parse_url()功能,可帮助您基本拆分为协议,主机,端口等。
至于在不确定的情况下提取“正确”域名,这是非常难以辨别的,因为有时候,“两部分TLD”是TLD权威机构(例如在英国)的衡量标准,有时是私营企业(例如.uk.com
)。我认为您不会维护包含两个部分的顶级域名列表,例如
这些结局将被视为TLD(顶级级别域名),吞噬第二部分。
这是可靠地区分“两部分顶级域名”的唯一方法,例如.co.uk
- server1.ibm.co.uk
(其中需要删除两部分.co.uk
以确定域名本身)来自server1.ibm.com
等常规子域(其中.com
需要删除)。
获取许多重要的“两部分TLD”列表的一个很好的起点是speednames.com上的域名搜索(在国家/地区选择“全部”)。更完整的列表可以找到part of the Ruby domainatrix library。
答案 2 :(得分:0)
使用Ruby,您可以使用Domainatrix库/ gem
http://www.pauldix.net/2009/12/parse-domains-from-urls-easily-with-domainatrix.html
require 'rubygems' require 'domainatrix' s = 'http://www.champa.kku.ac.th/dir1/dir2/file?option1&option2' url = Domainatrix.parse(s) url.domain => "kku"
很棒的工具! : - )