使用PHP扩展IPv6地址的快速方法

Mik*_*osh 5 php tcp ipv6

我正在开发一个需要扩展IPv6地址的项目.其他用户创建的功能并不多,而且存在的功能很难看.其中一些包括多个foreachgmp_init,这增加了很多开销,更难维护代码.我需要一个简单,无税的脚本来扩展IPv6.

将此发布给社区.

Mik*_*osh 21

以下是双线路,其中$ip是压缩的IPv6地址.退货扩大$ip.

示例:

$ip = "fe80:01::af0";
echo expand($ip); // fe80:0001:0000:0000:0000:0000:0000:0af0
Run Code Online (Sandbox Code Playgroud)

功能:

function expand($ip){
    $hex = unpack("H*hex", inet_pton($ip));         
    $ip = substr(preg_replace("/([A-f0-9]{4})/", "$1:", $hex['hex']), 0, -1);

    return $ip;
}
Run Code Online (Sandbox Code Playgroud)

  • 在我作为PHP开发人员的所有岁月中,这是解决我从未见过的PHP核心所缺少的功能(以及您的dtr_pton / dtr_ntop函数)的最佳解决方案。精美简单而优雅。 (2认同)
  • 谢谢,非常优雅的解决方案。我建议将第二行写为 `return implode(':', str_split($hex['hex'], 4));`。提高可读性,避免使用 `substr` 清理多余的冒号,并避免不必要地使用正则表达式。 (2认同)