当前位置:  开发笔记 > 编程语言 > 正文

如何使用PHP从URL获取域名?

如何解决《如何使用PHP从URL获取域名?》经验,为你挑选了1个好方法。

我有2个表(url_feedclean_domains).我正在尝试将所有数据复制url_feedclean_domains同一时间并domainurl列中插入.

此外,它会在将行复制到之后将statusfrom 更改queuedcompletein .url_feedclean_domains

这是2个表的样子:

url_feed

id | url                                    | matches | networks                    | status
1  | http://whatever.com/example1.php       | 5       | Facebook::Twitter Inc       | queued
2  | http://www.example.com/other-stuff.php | 2       | MySpace::Facebook::Twitter  | queued
3  | http://www.test.com/random-text        | 12      | Instagram::Twitter          | queued

clean_domains

id | domain       | url                                     | matches | networks                    | status
1  | whatever.com | http://whatever.com/example1.php        | 5       | Facebook::Twitter Inc       | queued
2  | example.com  | http://www.example.com/other-stuff.php  | 2       | MySpace::Facebook::Twitter  | queued
3  | test.com     | http://www.test.com/random-text         | 12      | Instagram::Twitter          | queued

这是我的代码:


我的代码适用于99%的域名,但我无法弄清楚如何使其完美运行.

这是3次似乎无法完美运行:

    冒号 - http://example.com:88/testing像这样的URL正在输出域名,example.com:88而我希望它是example.com.

    IP地址 - http://188.123.44.12/test.php- 对于IP,它似乎正确地将IP地址输入数据库.在示例中它将188.123.44.12作为domain- 但我不想要那样输入.我只想要域名,所以如果是IP,就不应该复制它.应标示completeurl_feed,并移动到下一行.

    子域名 - http://subdomain.whatever.example.com/test.html- 这是在我想要的时候输入到domain列中.subdomain.whatever.example.comexample.com

我可以考虑验证输入的域是否真的是域的唯一方法是对每个域运行whois查询.如果它没有作为有效的回复,它删除了第一个文本块.例如,它不会获得有效的结果,subdomain.whatever.example.com然后它会尝试whatever.example.com然后尝试example.com直到结果有效或者跳过它并将status列标记为complete.

关于我可以改变什么以使其正常工作的任何想法?

这就是我现在所处的位置:

$_url_string = 'https://testfewfew.dsd.google.co.uk/testing/whatever';
preg_match("/[a-z0-9\-]{1,63}\.[a-z\.]{2,6}$/", parse_url($_url_string, PHP_URL_HOST), $_domain_tld);
echo $_domain_tld[0];

Alex Andrei.. 5

只需使用内置的PHP功能 parse_url

您可以像这样从主机名过滤子域

$url = 'http://subdomain.whatever.example.com/test.html';

$data = parse_url($url);

$host = $data['host'];

$hostname = explode(".", $host);
$domain = $hostname[count($hostname)-2] . "." . $hostname[count($hostname)-1];

print $domain;

会输出

example.com

如果你有url一个端口,parse_url将很容易处理它,例如

$url = 'http://example.com:88/testing';

$data = parse_url($url);

print_r($data);

会输出

Array
(
    [scheme] => http
    [host] => example.com
    [port] => 88
    [path] => /testing
)

在下面检查主机名是否是有效的IP地址

$url = 'http://188.123.44.12/test.php';

$data = parse_url($url);

print_r($data);

$hostIsIpAddress = ip2long($data['host']) !== false;

var_dump($hostIsIpAddress);

哪个会输出bool(true)bool(false)分别输出



1> Alex Andrei..:

只需使用内置的PHP功能 parse_url

您可以像这样从主机名过滤子域

$url = 'http://subdomain.whatever.example.com/test.html';

$data = parse_url($url);

$host = $data['host'];

$hostname = explode(".", $host);
$domain = $hostname[count($hostname)-2] . "." . $hostname[count($hostname)-1];

print $domain;

会输出

example.com

如果你有url一个端口,parse_url将很容易处理它,例如

$url = 'http://example.com:88/testing';

$data = parse_url($url);

print_r($data);

会输出

Array
(
    [scheme] => http
    [host] => example.com
    [port] => 88
    [path] => /testing
)

在下面检查主机名是否是有效的IP地址

$url = 'http://188.123.44.12/test.php';

$data = parse_url($url);

print_r($data);

$hostIsIpAddress = ip2long($data['host']) !== false;

var_dump($hostIsIpAddress);

哪个会输出bool(true)bool(false)分别输出

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有