ip2long

(PHP 4, PHP 5, PHP 7)

ip2longConvertit une chaîne contenant une adresse (IPv4) en notation décimale à point en une adresse entier long

Description

ip2long ( string $ip_address ) : int

La fonction ip2long() génère une représentation en entier long d'une adresse IPv4 depuis son format standard (notation décimale à point)

ip2long() fonctionne également avec des adresses IP incomplètes. Lire » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm pour plus d'informations.

Liste de paramètres

ip_address

Une adresse au format standard.

Valeurs de retour

Retourne l'entier long, ou FALSE si ip_address est invalide.

Historique

Version Description
5.5.0 Antérieur à cette version, sur Windows ip2long() retournait parfois un nombre valide même si la valeur passée n'était pas une adresse IPv4 en notation décimale à point.
5.2.10 Antérieur à cette version, ip2long() retournait parfois un nombre valide même si la valeur passée n'était pas une adresse IPv4 en notation décimale à point.

Exemples

Exemple #1 Exemple avec ip2long()

<?php
$ip 
gethostbyname('www.example.com');
$out "Les URLS suivantes sont équivalentes :<br />\n";
$out .= 'http://www.example.com/, http://' $ip '/, and http://' sprintf("%u"ip2long($ip)) . "/<br />\n";
echo 
$out;
?>

Exemple #2 Affichage d'une adresse IP

Ce second exemple montre comment afficher une adresse convertie à l'aide de la fonction printf() :

<?php
$ip   
gethostbyname('www.example.com');
$long ip2long($ip);

if (
$long == -|| $long === FALSE) {
    echo 
'IP invalide, merci d\'essayer encore';
} else {
    echo 
$ip   "\n";            // 192.0.34.166
    
echo $long "\n";            // 3221234342 (-1073732954 sur les sytèmes 32-bit, à cause du débordement d'entier)
    
printf("%u\n"ip2long($ip)); // 3221234342
}
?>

Notes

Note:

Comme les entier PHP sont signés et que beaucoup d'adresses IP résulteront en des entiers négatifs sur les architectures 32-bits, vous devez utiliser le motif "%u" de la fonction sprintf() ou de la fonction printf() pour récupérer la représentation sous forme de chaîne de caractères d'une adresse IP non signé.

Note:

ip2long() retournera FALSE pour l'adresse IP 255.255.255.255 en PHP 5 <= 5.0.2, et -1 sur les systèmes 64-bits en PHP 5 <=5.2.4. Ça a été corrigé en PHP 5.2.5 où ça retourne 4294967295. Les systèmes 32-bit retourneront -1 à cause du débordement de la valeur d'entier.

Voir aussi

  • long2ip() - Convertit une adresse entier long (IPv4) en sa notation décimale à point
  • sprintf() - Retourne une chaîne formatée