gpt4 book ai didi

php - windows中php 5.2.17的inet_pton替换函数

转载 作者:可可西里 更新时间:2023-11-01 09:45:51 25 4
gpt4 key购买 nike

replacement alternative for inet_pton() 上在 PHP 中,给出以下代码:

<?php
function inet_pton($ip)
{
# ipv4
if (strpos($ip, '.') !== FALSE) {
$ip = pack('N',ip2long($ip));
}
# ipv6
elseif (strpos($ip, ':') !== FALSE) {
$ip = explode(':', $ip);
$res = str_pad('', (4*(8-count($ip))), '0000', STR_PAD_LEFT);
foreach ($ip as $seg) {
$res .= str_pad($seg, 4, '0', STR_PAD_LEFT);
}
$ip = pack('H'.strlen($res), $res);
}
return $ip;
}
?>

但是当使用下面的测试代码进行测试时,它表明并非所有条目都是正确的:

<?php
$arrIPs = array(
"2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"fe80:01::af0",
"::af0",
"192.168.0.1",
"0000:0000:0000:0000:0000:0000:192.168.0.1");
foreach($arrIPs as $strIP) {
$strResult = bin2hex(inet_pton($strIP));
echo "From: {$strIP} to: {$strResult}<br />\n";
}
/*
From: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 to: 20010db885a3000000008a2e03707334
From: fe80:01::af0 to: 0000000000000000fe80000100000af0 //Incorrect
From: ::af0 to: 00000000000000000000000000000af0
From: 192.168.0.1 to: c0a80001
From: 0000:0000:0000:0000:0000:0000:192.168.0.1 to: 00000000 //Incorrect
*/
?>

我不知道正确的 IPv6 语法,所以我更希望其他人(更了解 IPv6 和标准)查看此内容并告诉我它有什么问题?

最佳答案

我刚刚从 php.net 下载了 PHP 5.3 安装程序安装程序中包含 PEAR。它只是没有默认安装:

PHP 5.3 PEAR install option

关于php - windows中php 5.2.17的inet_pton替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com