(PHP 4, PHP 5)
ip2long — Convertit une chaîne contenant une adresse (IPv4) IP numérique en adresse littérale
ip2long() génère une adresse IPv4 à partir de son équivalent numérique. Si ip_address est invalide, la fonction retournera -1 . Notez que -1 n'est pas évalué à FALSE en PHP.
Note: Depuis PHP 5.0.0, ip2long() retourne FALSE si le paramètre ip_address n'est pas valide.
Exemple 1763. Exemple avec ip2long()
<?php
$ip
=
gethostbyname
(
'www.example.com'
);
$out
=
"Les URLS suivantes sont équivalentes :<br />\n"
;
$out
.=
'http://www.example.com/, http://'
.
$ip
.
'/, et http://'
.
ip2long
(
$ip
) .
"/<br />\n"
;
echo
$out
;
?>
Note: Comme les entiers PHP sont signés et que beaucoup d'adresses IP peuvent être des entiers négatifs, vous devez utiliser le formateur "%u" de la fonction sprintf() ou printf() pour récupérer une représentation sous la forme d'une chaîne de caractères pour les adresses IP non signées.
Ce second exemple montre comment afficher une adresse convertie à l'aide de la fonction printf() en PHP 4 et en PHP 5 :
Exemple 1764. Affichage d'adresse IP
<?php
$ip
=
gethostbyname
(
'www.example.com'
);
$long
=
ip2long
(
$ip
);
if (
$long
== -
1
||
$long
===
FALSE
) {
echo
'IP invalide, merci d\'essayer encore'
;
} else {
echo
$ip
.
"\n"
;
// 192.0.34.166
echo
$long
.
"\n"
;
// -1073732954
printf
(
"%u\n"
,
ip2long
(
$ip
));
// 3221234342
}
?>
ip2long() ne devrait pas être utilisée comme seule méthode pour valider une adresse IP. Combinez-la avec long2ip() :
Exemple 1765. Validation d'adresse IP
<?php
// s'assure que les IPs sont valides. Convertit également une IP incomplète
// en un format valide comme expliqué plus haut.
$ip
=
long2ip
(
ip2long
(
"127.0.0.1"
));
// "127.0.0.1"
$ip
=
long2ip
(
ip2long
(
"10.0.0"
));
// "10.0.0.0"
$ip
=
long2ip
(
ip2long
(
"10.0.256"
));
// "10.0.1.0"
?>
ip2long() fonctionne également avec des adresses IP incomplètes. Lisez » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm pour plus d'informations.
Note: ip2long() devrait retourner FALSE pour l'adresse IP 255.255.255.255 en PHP 5 <= 5.0.2. Ce comportement a été modifié en PHP 5.0.3 où il retournait -1 (comme en PHP 4).