Не могу заставить ip2long () работать

Я пытаюсь сравнить некоторые IP-адреса, которые хранятся в виде строк. Я читаю о ip2long() чтобы преобразовать строку в целое число, поэтому я поиграюсь с ней, чтобы посмотреть, будет ли она делать то, что я хочу. Итак, сначала я просто пытаюсь увидеть, как выглядит конвертированный IP. Я написал следующий код, чтобы посмотреть на это, но ничего не конвертируется. Я не понимаю, что я делаю не так. Вот код:

<?php
foreach($form->data[vicondb] as $video_net_key)
{
if ($video_net_key['ipaddress'] != null)
{
echo "The IP address is " . $video_net_key['ipaddress'];
$iplong = ip2long($video_net_key['ipaddress']);
echo " --- The ip long conversion is " . $iplong . "<br>";
}

} // End foreach($form->data[vicondb] as $video_net_key)

echo "End of both foreach statements<br>";
?>

Вот пример результата:

IP-адрес 172.26.0.10 — Преобразование IP-адреса

IP-адрес 172.26.0.31 — Преобразование IP-адреса

IP-адрес 172.26.0.32 — Преобразование IP-адреса

IP-адрес 172.26.0.33.

Вот образец var_dump() для IP и конвертируется в целое число:

string(12) "172.26.0.10 "bool(false)
string(12) "172.26.0.31 "bool(false)
string(12) "172.26.0.32 "bool(false)

0

Решение

Вам нужно обрезать IP, так как он кажется завершающим и недействительным:

$iplong = ip2long(trim($video_net_key['ipaddress']));
0

Другие решения

Это может быть что-то похожее на это

«Поскольку целочисленный тип PHP подписан, а многие IP-адреса приводят к получению отрицательных целых чисел в 32-разрядных архитектурах, вам нужно использовать форматер«% u »в sprintf () или printf (), чтобы получить строковое представление неподписанного IP адрес.» Из статьи ip2long php.net

Это должно работать:

echo " --- The ip long conversion is " . sprintf("%u", ip2long($video_net_key['ipaddress'])) . "<br>";
0

По вопросам рекламы [email protected]