【问题标题】:Exact an IP address out of a Host URL从主机 URL 中准确获取 IP 地址
【发布时间】:2017-04-07 15:50:16
【问题描述】:

我有一个主机 = http://172.19.242.32:1234/

我的目标是只抢IP = 172.19.242.32

我试过了

$ip = trim($host,'http://');
$ip = str_replace("/", "",$ip);
$ip = explode(":",$ip);
$ip = $ip[0];

我按预期获得了我的 IP,但我不能再这样做了,因为它会弄乱 IPv6 格式。

替代方法是什么?有什么建议吗?

【问题讨论】:

标签: php substring ip-address host


【解决方案1】:

使用parse_url():您可以省略PHP_URL_HOST 以返回所有组件的数组。

<?php
$host = 'http://172.19.242.32:1234/';
echo parse_url($host, PHP_URL_HOST);

返回

172.19.242.32

https://eval.in/770497

【讨论】:

  • 返回[fd8c::11]
  • 太棒了,那就是正确答案。我会尽快接受的。
【解决方案2】:
$url="http://172.19.242.32:1234/";
$regexIpAddress = '/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:\/\d{2})?/';        
preg_match_all($regexIpAddress, $url, $ip_match);
var_dump($ip_match[0]);

这个 reg 表达式匹配函数将从任何字符串中提取 IP 地址。

【讨论】:

  • 太复杂了,这对 IPv6 有效吗?前任。主机=http://[fd8c::11]:1234/ ?
  • 这是 IPv4 正则表达式匹配。
【解决方案3】:

我认为正确的方法是$_SERVER['SERVER_ADDR']?它应该只返回 IP

【讨论】:

  • 这将返回当前脚本正在执行的服务器的 IP 地址。 OP 要求从某个字符串中获取 IP 地址。
  • 他说他有一个主机,我解释为他自己的主机,脚本运行的地方。
猜你喜欢
  • 2012-05-31
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2018-10-29
  • 2011-11-01
相关资源
最近更新 更多