Sanes
@Sanes

Почему адрес 192.168.1.001 не валидный?

Почему адрес 192.168.1.001 не валидный?
$validated = $request->validate([
            'address' => 'ip'            
        ]);

Тоже самое вижу в библиотеке rlanvin/php
IP::create('192.168.1.001');
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 3
@alexalexes
Потому что не принято записывать IPv4 в десятичной форме с ведущими нулями. Не нужно соблюдать символьную длину адреса, так как компоненты адреса различаются между собой точками, а не позицией конкретной цифры.
Ответ написан
@Drno
Вы же в 3ей секции не написали тоже 001, почему в последней секции написали?)
принято нули упускать, правильно 192.168.1.1
Ответ написан
@kalapanga
Здесь суть в том, что ведущий ноль - признак восьмеричной системы.
Возможно, найдя один блок в восьмеричной системе библиотека рассматривает все остальные блоки как восьмеричные. Тогда понятно, что 8 и 9 недопустимые цифры.
Windows же, например, считает несколько иначе. Поиграем с командой ping:
ping 172.20.0.002
Обмен пакетами с 172.20.0.2 по с 32 байтами данных
...
ping 172.20.0.010
Обмен пакетами с 172.20.0.8 по с 32 байтами данных
...
Видно, что блоки без ведущих нулей считаются десятичными и используются как есть, а блок с нулём считается восьмеричным и в выводе команды преобразуется в десятичную систему.
(Адреса для примера. Можете сами на других доступных проверить.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы