Quick way of expanding IPv6 Addresses with PHP

ip-address, ipv6, php

Solution

The following is a two liner, where `$ip` is a condensed IPv6 address. Returns expanded `$ip`.

Example:

$ip = "fe80:01::af0";
echo expand($ip); // fe80:0001:0000:0000:0000:0000:0000:0af0

Function:

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;
}

Problem

I am working on a project where I needed to expand IPv6 addresses. That is, given the input `2600:fc00:b0a3::34` I need to get `2600:fc00:b0a3:0000:0000:0000:0000:0034`. I found one piece of code that required the GMP extension, which I can't install. How can I fully expand an IPv6 address in PHP?

Original source