Archiv pro měsíc: Červenec 2017

Jak inkrementovat IPv6 adresu v PHP

PHP nativně nepodporuje dostatečně velká (128 bit) čísla, aby bylo inkrementování decimální reprezentace IPv6 adresy (jednoduše) možné. Pro zjednodušení tedy budeme potřebovat GMP extension.

Nejdříve je potřeba převést IP adresu do binární podoby a instanciovat GMP číslo:

$ip = gmp_import(inet_pton('2001:15b::1'));

Poté můžeme IP inkrementovat tak, jak jsme zvyklí:

$ip++;

Nakonec IP převedeme zpět do klasického formátu:

$ip = inet_ntop(hex2bin(gmp_strval($ip, 16)));
// 2001:15b::2

Nebo pokud preferuje dlouhý formát adresy:

$ip = implode(':', str_split(gmp_strval($ip + 1, 16), 4));
// 2001:015b:0000:0000:0000:0000:0000:0002