Я работал над проектом, где мне нужно было расширить адреса 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; }