用域名替换IP
Replace IP with domain name
我想将 url 中的 IP 地址替换为普通域名。简而言之:
Change
http://123.456.789.025/images/2015/a/
Into
http://images.domain.com/images/2015/a/
有人知道怎么做吗?我在 SO 上找不到它。
谢谢!
如果您知道那里总会有 IP(在其他情况下,这将替换查询字符串中的其他 IP):
$url = join($host, preg_split('/\d+\.\d+\.\d+\.\d+/', $url, /*limit*/1))
这个基本不行,不用各种坑爹的方法。如果注册了 SPF 记录,您可以 猜测 哪个域链接到 IP,但仅此而已。一个 IP 最常被数百甚至数千个域共享。因此,if 您可以通过查询名称服务器找出哪些域链接到 IP 地址,即使那样您也不知道成千上万的 TLD 中哪一个是正确的。我能想到的找出答案的唯一方法是使用 TLD URL 和 以及 IP URL 来抓取页面,然后比较输出。但这真的很棘手,因为当页面提供动态内容时,每个请求的输出(几乎)都会不同。这将强制您必须对链接到 IP 的每个域都执行请求,直到找到匹配项。
当然,当你事先知道ip的时候,只需要创建一个数组:
$ip2domain = array(
'123.123.123.123' => 'mydomain.com',
...
);
$url = 'http://'. $ip2domain['123.123.123.123'] .'/images/2015/a/';
EDIT 我看到你在编辑,你知道域等。在那种情况下,只需用 php 解构 url本机 parse_url() function. For constructing the url, use http_build_url():
$url = 'http://123.456.789.025/images/2015/a/';
$parts = parse_url($url);
$parts['host'] = 'example.com';
$final_url = http_build_url($parts); // http://example.com/images/2015/a
(有时看 php.net 而不是 SO 是值得的 ;))
我想将 url 中的 IP 地址替换为普通域名。简而言之:
Change
http://123.456.789.025/images/2015/a/
Into
http://images.domain.com/images/2015/a/
有人知道怎么做吗?我在 SO 上找不到它。
谢谢!
如果您知道那里总会有 IP(在其他情况下,这将替换查询字符串中的其他 IP):
$url = join($host, preg_split('/\d+\.\d+\.\d+\.\d+/', $url, /*limit*/1))
这个基本不行,不用各种坑爹的方法。如果注册了 SPF 记录,您可以 猜测 哪个域链接到 IP,但仅此而已。一个 IP 最常被数百甚至数千个域共享。因此,if 您可以通过查询名称服务器找出哪些域链接到 IP 地址,即使那样您也不知道成千上万的 TLD 中哪一个是正确的。我能想到的找出答案的唯一方法是使用 TLD URL 和 以及 IP URL 来抓取页面,然后比较输出。但这真的很棘手,因为当页面提供动态内容时,每个请求的输出(几乎)都会不同。这将强制您必须对链接到 IP 的每个域都执行请求,直到找到匹配项。
当然,当你事先知道ip的时候,只需要创建一个数组:
$ip2domain = array(
'123.123.123.123' => 'mydomain.com',
...
);
$url = 'http://'. $ip2domain['123.123.123.123'] .'/images/2015/a/';
EDIT 我看到你在编辑,你知道域等。在那种情况下,只需用 php 解构 url本机 parse_url() function. For constructing the url, use http_build_url():
$url = 'http://123.456.789.025/images/2015/a/';
$parts = parse_url($url);
$parts['host'] = 'example.com';
$final_url = http_build_url($parts); // http://example.com/images/2015/a
(有时看 php.net 而不是 SO 是值得的 ;))