ip2long

(PHP 4, PHP 5)

ip2longКонвертирует строку, содержащую (IPv4) Интернет адрес с точками в допустимый адрес

Описание

int ip2long ( string $ip_address )

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

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

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

ip_address

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

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

Возвращает Ipv4 адрес или FALSE, если ip_addres содержит ошибку.

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

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

Примеры

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

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

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

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

<?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
}
?>

Пример #3 Валидация IP

Функция ip2long() не должны использоваться как единственный способ IP валидации. Необходимо сочетать её с long2ip():

<?php
// Необходимо убедиться в правильности IP адресов
// Также неполный IP будет сконвертирован в
// правильный формат с точками, как показано ниже.
$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"
?>

Примечания

Замечание:

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

Замечание:

Функция ip2long() возвратит FALSE для IP 255.255.255.255 в PHP 5 <= 5.0.2. Это было исправлено в PHP 5.0.3, теперь возвращается -1 (как и в PHP 4).

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

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


Участник рейтинга Тэглайн 2010