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 адреса

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

1. PATCH - 15 Января, 2012 - 21:12:57 - перейти к сообщению
собствено ничего замудреного ненадО) скрипт для парсинга с 1 страницы своего ip
т.е регулярное выражение вида 0-9 . 0-9 . 0-9 . 0-9 1-3 символа
написал так
PHP:
скопировать код в буфер обмена
  1. preg_match_all("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/",$text,$array);
- но массив пустой где ошибка?
вот сайт http://www[dot]myip[dot]ru/get_ip.php
2. EuGen - 15 Января, 2012 - 21:16:15 - перейти к сообщению
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
3. PATCH - 15 Января, 2012 - 21:20:29 - перейти к сообщению

array(1) { [0]=> array(0) { } }
4. vectorserver - 15 Января, 2012 - 21:27:28 - перейти к сообщению
А может самму написать типо так наскоряк (уже свой сервис)
PHP:
скопировать код в буфер обмена
  1. function getIP() {
  2. $content;
  3. if (getenv("HTTP_CLIENT_IP")) $content = getenv("HTTP_CLIENT_IP"); //сам пхп проверяет ип клиента
  4. else if(getenv("HTTP_X_FORWARDED_FOR")) $content = getenv("HTTP_X_FORWARDED_FOR") ; //определение прокси серворов
  5. else if(getenv("REMOTE_ADDR")) $content = getenv("REMOTE_ADDR");  //определение IP адреса
  6. else $content = "Не определен"; //если нет
  7. return $content;
  8. }
  9.  
  10. $ip = getIP();
  11. echo "Твой ип адрес: ".$ip;
5. PATCH - 15 Января, 2012 - 23:08:55 - перейти к сообщению
да мне не сервис надо а чисто ип вырезать)
6. OrmaJever - 15 Января, 2012 - 23:16:19 - перейти к сообщению
PATCH, а зачем его вырезать если можно определить самому? Однако
7. PATCH - 15 Января, 2012 - 23:51:07 - перейти к сообщению
OrmaJever пишет:
PATCH, а зачем его вырезать если можно определить самому?
своеобразная проверка на анонимность прокси
8. EuGen - 16 Января, 2012 - 06:45:48 - перейти к сообщению
Вероятно, я забыл группы.
/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/
9. LIME - 16 Января, 2012 - 08:00:51 - перейти к сообщению
PATCH пишет:
своеобразная проверка на анонимность прокси
и что?
заходи на свой сервис через прокси в чем проблема?
(Добавление)
EuGen пишет:
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/
разницы не вижу
просветите
10. PATCH - 26 Февраля, 2012 - 18:47:06 - перейти к сообщению
) не работают регулярки D) тогда я прост забил на это но сча опять понадобилось) выдрать все ip из файла)
11. Panoptik - 26 Февраля, 2012 - 19:21:08 - перейти к сообщению
ну самым правильным будет наверное такой паттерн
/[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}/
12. PATCH - 26 Февраля, 2012 - 19:32:56 - перейти к сообщению
Panoptik пишет:
ну самым правильным будет наверное такой паттерн
/[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}\.[0-2](?:[\d]*){0,2}/
этот не работает возвращает пустой массив зато эти работают
Цитата:
/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/
для жесткой промодерации ип они не сгодятся но мне собствено это и ненадо чисто из файла выдрать ip
но это ненадо) у меня регулярки не работали из за своей де глупости)) я замест строки передовал массив)
13. IllusionMH - 26 Февраля, 2012 - 19:49:54 - перейти к сообщению
PATCH, последний пункт - регулярка для IP
8 полезных регэкспов с наглядным разбором
14. hiddensy - 27 Июня, 2012 - 13:29:45 - перейти к сообщению
Не могу разобраться как правильно написать регулярное выражение.

Нужно IP:port разбить и записать в массив

Пример: 192.168.2.34:8080

Результат:
Array
(
[0] => 192
[1] => 168
[2] => 2
[3] => 34
[4] => 8080
)

Помогите составить регулярку пожалуйста
(Добавление)
Наконец-то разобрался... Если кому интересно, то вот рабочий вариант

PHP:
скопировать код в буфер обмена
  1.  
  2. $getIP = "192.168.2.34:8080";
  3. preg_match_all('/([0-9]+)/',$getIP,$arr);
  4. for ($i=0; $i<count($arr[1]); $i++) echo $arr[1][$i]."<br>";
  5.  
15. DeepVarvar - 27 Июня, 2012 - 14:24:47 - перейти к сообщению
hiddensy пишет:
/([0-9]+)/
Ваш вариант полурабочий.
Он пропускает некорректные значения.
Диапазон IPv4: 0.0.0.0:0 - 255.255.255.255:65535
И мне кажется вы это знаете.

 

Powered by ExBB FM 1.0 RC1