Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как проверить или значение является IP адресом
Форумы портала PHP.SU » PHP » Регулярные выражения » Как проверить или значение является IP адресом

Страниц (1): [1]
 

1. Jeick9 - 27 Мая, 2015 - 20:41:13 - перейти к сообщению
Здравствуйте форумчане.
Подскажите пожалуйста как сделать условие на значения IP-адреса?
То есть, я принимаю IP с формы и мне надо проверить или данное значение является IP-адресом. Как именно проверить что значение состоит из чисел и 3-х точек?
3. GoDr - 28 Мая, 2015 - 08:44:26 - перейти к сообщению
Немного по проще Улыбка
PHP:
скопировать код в буфер обмена
  1. $good = "124.43.44.230";
  2. $bad1 = "320.23.434.23";
  3. $bad2 = "32.023.AA.23";
  4.  
  5. $result1 = ip2long($good);
  6. $result2 = ip2long($bad1);
  7. $result3 = ip2long($bad2);
  8.  
  9. $result = array();
  10.  
  11. if($result1){
  12.     $result[] = 'IP-адрес ' . $good . ' правильный';
  13. }else{
  14.     $result[] = 'IP-адрес ' . $good . ' неправильный';
  15. }
  16. if($result2){
  17.     $result[] = 'IP-адрес ' . $bad1 . ' правильный';
  18. }else{
  19.     $result[] = 'IP-адрес ' . $bad1 . ' неправильный';
  20. }
  21. if($result3){
  22.     $result[] = 'IP-адрес ' . $bad2 . ' правильный';
  23. }else{
  24.     $result[] = 'IP-адрес ' . $bad2 . ' неправильный';
  25. }
  26.  
  27. echo implode('<br>', $result);

(Добавление)
даже можно чуть извратиться Радость
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * Возвращает IPv4 адрес, проверяет корректность
  3.  *
  4.  * @param string $ip : IPv4 Интернет адрес с точками
  5.  * @param bool $value : определяет в каком формате возвращать данные
  6.  *                    - false (по умолчанию) : int|false
  7.  *                    - true : string
  8.  *
  9.  * @return int|false|string
  10.  *
  11.  * @example:
  12.  *         $a = MyIp2Long('195.33.44.55');
  13.  *         $b = MyIp2Long('195.33.44.55', true);
  14.  *         echo MyIp2Long('195.33.44.55', 1);
  15.  */
  16. function MyIp2Long($ip, $value = false)
  17. {
  18.     // конвертируем IP-адрес
  19.     $_result = ip2long($ip);
  20.  
  21.     // если нужно вывести строкой результат
  22.     if ($value) {
  23.  
  24.         if ($_result) {// если адрес корректный
  25.  
  26.             $_result = 'IP-адрес ' . $ip . ' правильный';
  27.  
  28.         } else {// если адрес не корректный
  29.  
  30.             $_result = 'IP-адрес ' . $ip . ' неправильный';
  31.         }
  32.     }
  33.  
  34.     // возвращаем результат
  35.     return $_result;
  36. }
4. LIME - 28 Мая, 2015 - 09:13:21 - перейти к сообщению
GoDr и чем это проще?
абсолютно тот же способ только для того чтобы изменить сообщение придется ф-цию новую писать))
уж лучше тогда шаблон передавать
для sprintf
текущий можно установить как шаблон по умолчанию
хотя это тоже ещето извращение
каждая фция должна решать одну задачу
хочешь выводить в ф-ции пиши ее для вывод а в ней используй простую которая только валидирует
5. GoDr - 28 Мая, 2015 - 09:47:32 - перейти к сообщению
LIME пишет:
GoDr и чем это проще?
слово "проще" относилось к первой части ))))) ко второй части относится слово "извратиться"... Я сначала хотел ещё задействовать шаблоны (в т.ч. с применением sprintf) и подключить многоязычность, но чувствую уже перебор для скуки Радость

 

Powered by ExBB FM 1.0 RC1