Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
Yoggy

Выдрать IP из исходного кода

10.05.2013, 14:32. Показов 6358. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пытаюсь отпарсить исходный код страницы и получить IP сайта. Вот так все работает:
PHP
1
2
3
4
5
6
7
8
9
10
preg_match('/^[a-z0-9-.]+.[a-z]+$/i', $_POST['domaininfo'], $domain);
//$url = "http://site.com/check?host=" .$domain[0];
//$source = htmlspecialchars(file_get_contents($url));
//$expData = explode("\n", $source);
    
for($i=0; $i < count($expData); $i++)
{
    preg_match('/^<td colspan="3" class="wtr"><div id="remote_addr" class="ipadotted">(.)+<\/div>&nbsp;<\/td>$/', '<td colspan="3" class="wtr"><div id="remote_addr" class="ipadotted">127.0.0.1</div>&nbsp;</td>', $outData);
    echo $outData[0]. "<br>";
}
Но это выдранная строка из исходного кода, которая используется в качестве объекта, а мне бы хотелось, чтобы была задействована переменная $expData, то есть вот так:
PHP
1
2
3
4
5
6
7
8
9
10
preg_match('/^[a-z0-9-.]+.[a-z]+$/i', $_POST['domaininfo'], $domain);
$url = "http://site.com/check?host=" .$domain[0];
$source = htmlspecialchars(file_get_contents($url));
$expData = explode("\n", $source);
    
for($i=0; $i < count($expData); $i++)
{
    preg_match('/^<td colspan="3" class="wtr"><div id="remote_addr" class="ipadotted">(.)+<\/div>&nbsp;<\/td>$/', $expData[$i], $outData);
    echo $outData[0]. "<br>";
}
Однако на экран выводится одно слово - Array. Почему не выводится айпи адрес, как в предыдущем примере? Заранее спасибо.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2013, 14:32
Ответы с готовыми решениями:

Реализовать 2 статических анализатора исходного кода, которые будут проверять правила оформления кода
Доброго времени суток. Уже читал подобную пост здесь &quot;Парсер С++&quot;, но немного не то. Задача: реализовать 2 статических анализатора...

Смысл исходного кода
Всем привет. Поясните, пожалуйста, что делает функция nzero(n): function nzero(n) { if(n &lt; 1) { return &quot;&quot;; } ...

Подсветка исходного кода
На форуме LogicBoard подсветка синтаксиса реализованная через GeSHi. Как можно организовать такую же подсветку и в самом DLE? Кто...

5
0 / 0 / 3
Регистрация: 12.05.2013
Сообщений: 15
12.05.2013, 21:31
Вообще было бы не плохо показать кусок кода в котором происходит поиск (что бы можно было тестировать).

Реально ли нужно так много HTML пихать в регулярку?

Для того что бы искать что то в HTML как по мне лучше использовать библиотеки для работы с HTML. Например phpQuery (но это ваше дело конечно).

Во втором случае в $outData[0] массив, вот и распечатывает это слово.

Сделайте вместо
PHP
1
echo $outData[0]. "<br>";
вот это
PHP
1
2
print_r($outData[0]);
print "<br>";
и будет видно что там

и как вариант:
PHP
1
2
3
4
5
6
7
preg_match('/^[a-z0-9-.]+.[a-z]+$/i', $_POST['domaininfo'], $domain);
$url = "http://site.com/check?host=" .$domain[0];
$source = htmlspecialchars(file_get_contents($url));
preg_match_all('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/Dui', $expData, $matches);
print '<xmp>';
print_r($matches);
print '</xmp>';
0
Yoggy
13.05.2013, 13:58
Спасибо, помогло!
 Аватар для Vlad_IT
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
17.05.2013, 00:17
Цитата Сообщение от hara Посмотреть сообщение
и как вариант:
А что будет если ИП адрес будет иметь следующий вид?
Code
1
333.333.333.333
он его найдет, что будет неправильно. Каждый сектор в IP адресе должен иметь число не более 255, (что есть байт). Вот
Code
1
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
17.05.2013, 17:10
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/
    (?(DEFINE)
        (?P<byte>
            2
            (?:
                # 5
                # 50 .. 55
                5
                [0-5]?
            |
                # 0 .. 4
                # 00 .. 49
                [0-4]
                \d?
            |
                # 6 .. 9
                [6-9]
            )?
        |
            # 1
            # 10 .. 19
            # 100 .. 199
            1
            \d{0,2}
        |
            # 3 .. 9
            # 30 .. 99
            [3-9]
            \d?
        )
    )
 
    ^
    # собственно, IPv4
    (?&byte)
    (?:
        \.
        (?&byte)
    ){3}
    $
/x
Code
1
/(?(DEFINE)(?P<byte>2(?:5[0-5]?|[0-4]\d?|[6-9])?|1\d{0,2}|[3-9]\d?))^(?&byte)(?:\.(?&byte)){3}$/
0
0 / 0 / 3
Регистрация: 12.05.2013
Сообщений: 15
17.05.2013, 18:08
Vlad_IT
понятно что в IP сегмент должен быть 255 максимум. Но нужно различать валидацию и парсинг страницы.
Для каждой задачи своё решение. Сомневаюсь, например, что кто то парсит email полной регуляркой, которая соответствует RFC.

Там вообще можно было бы ограничится поиском любого текста между нужными тегами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2013, 18:08
Помогаю со студенческими работами здесь

Безопасность исходного кода
Доброе время суток. Думаю, что подобные темы в разделе поднимаются не редко, однако информация иногда бывает противоречивой. И надеюсь, что...

нет исходного кода
Функция для перевода десятичных целых чисел в произвольную систему счисления во время отладки выдает нет исходного кода void...

Оптимизатор исходного кода
. Оптимизатор исходного кода. Для увеличения/уменьше* ния значения целочисленной переменной на единицу в языках программирования можно...

Защита исходного кода
Кто реально сталкивался с задачей защиты исходного кода? Т.е. при коммерческом распространении ПО (допустим exe-файла) реализовать защиту...

Защита исходного кода
Здравствуйте, Уважаемые форумчане, хочу получить ваш бесценный совет по поводу защиты исходного кода. У меня возникла идея...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru