ip2long

(PHP 4, PHP 5, PHP 7)

ip2longКонвертирует строку, содержащую IPv4-адрес в целое число

Описание

ip2long ( string $ip_address ) : int

Функция ip2long() преобразует IPv4-адрес сети Интернет из стандартного формата (строка с точками) в целое число.

Функция ip2long() также будет работать с неполными IP-адресами. См. » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm для более подробной информации.

Список параметров

ip_address

Адрес в стандартном формате.

Возвращаемые значения

Возвращает целое число или FALSE, если параметр ip_address содержит ошибку.

Список изменений

Версия Описание
5.5.0 До этой версии в Windows ip2long() иногда могло быть возвращено корректное число, даже если был передан некорректный IPv4-адрес.
5.2.10 До этой версии функция ip2long() могла иногда возвращать верное число, даже если отправленное значение не было Интернет-адресом (IPv4) в точечном формате.

Примеры

Пример #1 Пример использования ip2long()

<?php
$ip 
gethostbyname('www.example.com');
$out "Следующие URL эквивалентны:<br />\n";
$out .= 'http://www.example.com/, http://' $ip '/, и http://' sprintf("%u"ip2long($ip)) . "/<br />\n";
echo 
$out;
?>

Пример #2 Отображение IP-адресов

Второй пример показывает как выводить сконвертированные адреса с помощью функции printf():

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

if (
$long == -|| $long === FALSE) {
    echo 
'Неверный IP-адрес, попробуйте еще раз';
} else {
    echo 
$ip   "\n";            // 192.0.34.166
    
echo $long "\n";            // -1073732954
    
printf("%u\n"ip2long($ip)); // 3221234342
}
?>

Примечания

Замечание:

Ввиду того, что тип PHP integer является знаковым, и на 32-битных системах многие IP-адреса будут представлены в виде отрицательных чисел, необходимо использовать "%u" в функции sprintf() или printf() для получения IP-адреса в строковом беззнаковом виде.

Замечание:

Функция ip2long() возвратит FALSE для IP 255.255.255.255 в PHP 5 <= 5.0.2 и -1 в PHP 5 <=5.2.4 на 64-битных системах. Это было исправлено в PHP 5.2.5, теперь возвращается 4294967295. В 32-битных системах будет возвращено -1 из-за целочисленного переполнения.

Смотрите также

  • long2ip() - Конвертирует целое число в IPv4-адрес
  • sprintf() - Возвращает отформатированную строку