$ IP_2 non è un indirizzo IPv6 valido. Hai bisogno di "::" da qualche parte lì dentro, per indicare il punto zero di omissione.
Se si dispone come una delle
$ip_2='2001::11ff:ffff:f';
$ip_2='2001:11ff::ffff:f';
$ip_2='2001:11ff:ffff::f';
poi inet_pton() dovrebbe funzionare bene.
Come già accennato, PHP non dispone di un tipo intero 128, quindi la cosa migliore che si può ottenere è una stringa numerica fuori dalla stringa binaria inet_pton() ti dà ... sì, questo è quello che è, ed è per questo che sembra strano Se guardi i pezzi di quelle stringhe, vedrai che sono esattamente ciò che ti aspetteresti.
Ecco come espandere la stringa binaria in una stringa numerica (argomento "0" che mancava da str_pad() in origine):
/**
* @param string $ip A human readable IPv4 or IPv6 address.
* @return string Decimal number, written out as a string due to limits on the size of int and float.
*/
function ipv6_numeric($ip) {
$binNum = '';
foreach (unpack('C*', inet_pton($ip)) as $byte) {
$binNum .= str_pad(decbin($byte), 8, "0", STR_PAD_LEFT);
}
return base_convert(ltrim($binNum, '0'), 2, 10);
}
fonte
2013-08-16 15:38:54
Cosa uscita vuoi arrivare, eventuali errori? – Halcyon
Il PHP ha un tipo di dati a 128 bit? – SLaks
1o ottengo testo strano 2o uno comprime ottengo l'errore – Ben