Быстрый способ расширения адресов IPv6 с помощью PHP

Я работал над проектом, где мне нужно было расширить адреса IPv6. Есть не так много функций, созданных другими пользователями, а те, которые существуют, уродливы. Некоторые из них включали несколько foreach и gmp_init , которые добавили много накладных расходов и сложнее поддерживать код. Мне нужен простой, не облагающийся налогом скрипт для расширения IPv6.

Публикация этого для сообщества.

Ниже приведена два слоя, где $ip – сжатый адрес IPv6. Возвращает расширенный $ip .

Пример :

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

Функция :

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