(PHP 4, PHP 5, PHP 7)
ip2long — Конвертирует строку, содержащую (IPv4) Интернет-адрес с точками в целое число (long)
$ip_address
)Функция ip2long() преобразует IPv4-адрес сети Интернет из стандартного формата (строка с точками) в целое число (long).
Функция 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 . '/, and http://' . sprintf("%u", ip2long($ip)) . "/<br />\n";
echo $out;
?>
Пример #2 Отображение IP адресов
Второй пример показывает как выводить сконвертированные адреса с помощью функции printf():
<?php
$ip = gethostbyname('www.example.com');
$long = ip2long($ip);
if ($long == -1 || $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. Это было исправлено в PHP 5.0.3, теперь возвращается -1.