php - 如何使用 PHP 从 IP 地址和 ipv6 中删除端口号?
问题描述
我正在使用strstr( $ip, ':') === false ? $ip : strstr( $ip, ':', true);
,但这当然不适用于 ipv6,所以我会知道是否有一种更简洁的方法来检查是否提供了端口并在 PHP 中将其删除。
因此对于:
192.168.0.1
192.168.0.1:3233
2001:569:be89:6200:5da6:745a:84fe:d899:3423
我得到:
192.168.0.1
192.168.0.1
2001:569:be89:6200:5da6:745a:84fe:d899
解决方案
<?php
$arr = [
'192.168.0.1',
'192.168.0.1:3233',
'2001:569:be89:6200:5da6:745a:84fe:d899:3423',
'[2001:db8::1]:8080'
];
print_r(array_map(fn($v) => parse_url('http://'.$v, PHP_URL_HOST), $arr));
结果将是所有主机,没有端口
Array
(
[0] => 192.168.0.1
[1] => 192.168.0.1
[2] => 2001:569:be89:6200:5da6:745a:84fe:d899
[3] => [2001:db8::1]
)
推荐阅读
- postgresql - 为多对多关系创建唯一索引
- python - 我不能打破函数内部的 While 循环吗?
- javascript - BitBucket 管道显示 npm: command not found
- php - 引起问题后的空间。为什么?
- reset - Soft wdt Reset - ESP8266 / NodeMCU 使用步进电机
- amazon-web-services - 使用 s3 路径的子字符串进行分区
- r - 如何不在 R 的条形图中绘制零值
- python - 如何在数据框中创建缺少的列并将其放置在正确的顺序
- kotlin - 即使调用 oncleared,Viewmodel 也不会被破坏
- python - 如何在类似于点积的numpy中获得“点加法”?