精确的IP地址了主机URL

问题描述:

我有一台主机的= http://172.19.242.32:1234/精确的IP地址了主机URL

我的目标是抢IP只= 172.19.242.32

我试图

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

我得到了我的IP为预计,但我不能这样做了,因为它会搞乱IPv6格式。

什么是替代方法?任何建议?

+2

['parse_url()'](http://php.net/manual/en/function.parse-url.php) –

+0

或者正则表达式'/ [\ d。] +(?=:)/' – Mohammad

+0

[在PHP中解析域名的URL]可能的重复(https://*.com/questions/276516/parsing-domain-from-url-in-php) – mickmackusa

使用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

+0

这将与IPv6协同工作吗?防爆。 'host = http:// [fd8c :: 11]:1234 /' – ihue

+1

它返回''[fd8c :: 11]''。 – alistaircol

+0

太棒了,那么这是正确的答案。我会尽快接受。 – ihue

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

+1

这将返回服务器的IP地址,当前脚本正在执行。 OP要求从某个字符串获取IP地址。 –

+0

他说他有一个主持人,我把它解释为他自己的主人,脚本在哪里运行。 – junkfoodjunkie

$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地址。

+0

太复杂了,\t 请问这个工作与IPv6?防爆。 host = http:// [fd8c :: 11]:1234 /? – ihue

+0

这是IPv4正则表达式匹配。 –