从主机 URL 中精确获取 IP 地址

Exact an IP address out of a Host URL

我有主机=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 格式。

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

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

使用parse_url():可以省略PHP_URL_HOST到return一个数组的所有分量。

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

returns

172.19.242.32

https://eval.in/770497

$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]);

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