Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160

Поиск информации по странице

12.09.2010, 23:52. Показов 7484. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как реализовать поиск нужной мне информации на сайте и занесение в базу данных

Код получаю $cod = file_get_contents('http://site.com/pages/hands');
HTML5
1
2
3
4
5
<td class="tip"><img class="itemicon" src="http://site.com/sites/images/icons/item/hands.png">
<div class="itemname">hands</div>
<div class="itemtype">Medium</div>
<div class="itemdata">487</div>
</td>
Как мне по фиолетовым данным найти красные данные, используя регулярные выражения?
Или подскажите документацию по регулярным выражениям на русском языке.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2010, 23:52
Ответы с готовыми решениями:

Ввод информации в структуру и поиск элемента по информации, находящейся в этом же элементе
В сервис-центре хранятся квитанции о сданной в ремонт аппаратуре. Каждая квитанция содержит следующую информацию: наименование группы...

Запись в текстовый файл информации о студентах, поиск информации, сортировка
Здравствуйте помогите пожалуйста:( 3.1 Для записи в текстовый файл информации о студентах Вашей группы создать КФ WRITE_FD.BAT со...

получения информации о странице
возник такой вопрос, есть функция page _ data для получения информации о странице. &lt;meta name=&quot;keywords&quot;...

61
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 18:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Curse Посмотреть сообщение
это не правильно?
Видмо, неправильно. Потому что нелогично, что название столбца в таблице равно его значению в SQL-выражении.

Цитата Сообщение от Curse Посмотреть сообщение
Notice: *Undefined variable: result4 in C:\wamp\www\cloaks.php on line 157
Похоже, что регулярка не подходит для входного текста или неправильно составлена. Покажите пример текста.
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
01.11.2010, 19:18  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Видмо, неправильно. Потому что нелогично, что название столбца в таблице равно его значению в SQL-выражении.
В базу информация заносится.
Цитата Сообщение от ostgals Посмотреть сообщение
Похоже, что регулярка не подходит для входного текста или неправильно составлена. Покажите пример текста.
HTML5
1
2
3
4
5
6
7
8
9
10
11
<p>Set(2): +21 Vitality<br>
Set(2): +9 Might<br>
Set(3): +21 Vitality<br>
Set(3): +21 Fate<br>
Set(4): +87 in-Combat Morale Regen<br>
Set(4): +39 Maximum Morale<br>
Set(5): +43 Vitality<br>
Set(5): +21 Might<br>
Set(6): +87 in-Combat Morale Regen<br>
Set(6): +43 Might<br>
Set(6): +88 Maximum Power<br></p>
Код записан в строку.
теги <div> находится на предыдущей и следующей строках
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 20:08
Цитата Сообщение от Curse Посмотреть сообщение
'#<div class="itemseteff"><p>(.+?)</p></div>#si'
И что же должна "выловить" эта регулярка из этого текста?
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
01.11.2010, 20:13  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
И что же должна "выловить" эта регулярка из этого текста?
Я предполагаю - все, что находится между тегами.
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 20:17
Цитата Сообщение от Curse Посмотреть сообщение
Я предполагаю - все, что находится между тегами.
ОК. Но если оба тэга div находятся на других строках, тогда чуть измените регулярку:
#<div class="itemseteff">\s*<p>(.+?)</p>\s*</div>#si

Это чтобы учитывались пробелы, к которым относится и перенос строки.
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
01.11.2010, 20:25  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
ОК. Но если оба тэга div находятся на других строках, тогда чуть измените регулярку:
#<div class="itemseteff">\s*<p>(.+?)</p>\s*</div>#si
Это чтобы учитывались пробелы, к которым относится и перенос строки.
Большое спасибо. А как можно добавить этот текст в массив с индексом [1] или в таблицу в ту же запись.
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 21:51
Цитата Сообщение от Curse Посмотреть сообщение
А как можно добавить этот текст в массив с индексом [1] или в таблицу в ту же запись.
Не понял, если честно. Можно пример?
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
01.11.2010, 22:11  [ТС]
В этот массив или в ту же строку, в которую заносятся данные.
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$regexps3 = '#<div class="items[a-z]"><a [^>]+>(.+?)</a></div>#si';
preg_match_all($regexps3, $cod, $match);
?>
<pre>
<?php print_r($match[1]); ?>
</pre>
<?php
mysql_query("INSERT INTO Sets (`" . implode("`, `",array_keys($match[1]))."`) VALUES('".implode("','", array_map('mysql_real_escape_string',array_values($match[1])))."');");
echo mysql_error();
?>
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 22:42
Полученный текст надо добавть в таблицу Sets?
Если да, то в какой столбец?
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
02.11.2010, 00:31  [ТС]
Да в таблицу sets, в столбец set_bonus
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
02.11.2010, 10:04
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    
    $regexps3 = '#<div class="items[a-z]"><a [^>]+>(.+?)</a></div>#si';
    $regexps4 = '#<div class="itemseteff">\s*<p>(.+?)</p>\s*</div>#si';
    
    preg_match_all($regexps3, $cod, $match);
    preg_match($regexp4, $cod, $match2);
    
    $match[1]['set_bonus'] = $match2[1]; // добавляем найденный текст в $match[1]
    
    mysql_query("INSERT INTO Sets (`" . implode("`, `",array_keys($match[1]))."`) VALUES('".implode("','", array_map('mysql_real_escape_string',array_values($match[1])))."');");
 
?>
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
06.11.2010, 02:03  [ТС]
В похожей ситуации не получается такими выражениями найти нужные данные
HTML5
1
2
<td class="ingredient sricon"><a href="/wiki/Item:S_Mark"><img src="localhost/it_barter_skirmish_point.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879155768"></a><br>Give<br>x0</td><td class="ingredient sricon"><a href="/wiki/Item:Ann%C3%B_Mark"><img src="localhost/it_barter_classic_specific_annuminas.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879185087"></a><br>Give<br>x2</td><td class="ingredient sricon"><br>Give<br>x5</td>
<td class="ingredient sricon"><a href="/wiki/Armour:Cloak_of_the_West-tower"><img src="localhost/eq_cloak_hvy_set_lvl65.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=armor&amp;rsargs[]=1879184913"></a><br>Get<br>x1</td>
Пытался найти следующим образом
PHP
1
2
<?php $regexps4 = '#<td class="ingredient sricon"><a href="/wiki/(.+?)">#si';
preg_match_all($regexps4, $cod, $match); ?>
и
PHP
1
2
<?php $regexps4 = '~<td class="ingredient sricon"><a href="/wiki/(.+?)">~';
preg_match_all($regexps4, $cod, $match); ?>
в ответ получаю
HTML5
1
2
3
4
5
6
7
8
9
Array
(
    [0] => Array
        (
        )
    [1] => Array
        (
        )
)
С чем это связано?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
06.11.2010, 21:11
Первая регулярка должна работать.

Код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
$text = '
<td class="ingredient sricon"><a href="/wiki/Item:S_Mark"><img src="localhost/it_barter_skirmish_point.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879155768"></a><br>Give<br>x0</td>
<td class="ingredient sricon"><a href="/wiki/Item:Ann%C3%B_Mark"><img src="localhost/it_barter_classic_specific_annuminas.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879185087"></a><br>Give<br>x2</td>
<td class="ingredient sricon"><br>Give<br>x5</td>
<td class="ingredient sricon"><a href="/wiki/Armour:Cloak_of_the_West-tower"><img src="localhost/eq_cloak_hvy_set_lvl65.png" class="icon" rel="/index.php?action=ajax&amp;rs=efLotroResourceAjaxWrapper&amp;rsargs[]=armor&amp;rsargs[]=1879184913"></a><br>Get<br>x1</td>';
 
$rexp = '#<td class="ingredient sricon"><a href="/wiki/(.+?)">#si';
 
if (preg_match_all($rexp, $text, $matches))
{
    echo '<pre>'.print_r($matches[1], true).'</pre>';
}
else
{
    echo 'Nothing';
}
Результат:
Code
1
2
3
4
5
6
Array
(
    [0] => Item:S_Mark
    [1] => Item:Ann%C3%B_Mark
    [2] => Armour:Cloak_of_the_West-tower
)
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
06.11.2010, 23:34  [ТС]
А если коды ячеек <td> записаны в строчку, а не начинаются с новой строки?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
07.11.2010, 10:08
Цитата Сообщение от Curse Посмотреть сообщение
А если коды ячеек <td> записаны в строчку, а не начинаются с новой строки?
Все равно сработает.
Не проще ли попробовать, чем спрашивать?
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
09.11.2010, 18:39  [ТС]
Не могу понять, когда код пишу в переменную сам то получается, если же при помощи функции file_get_contents , то ничего не находится.
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.11.2010, 22:15
Цитата Сообщение от Curse Посмотреть сообщение
Не могу понять, когда код пишу в переменную сам то получается, если же при помощи функции file_get_contents , то ничего не находится.
Раньше ведь находилось?
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
09.11.2010, 23:17  [ТС]
Все предыдущие регулярные выражения работают... поиск не проходит только по последнему. Но если вписать код в переменную вручную а не командой, то все находится.
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.11.2010, 23:48
Выведите полученный через file_get_contents() html:
PHP
1
echo htmlspecialchars(file_get_contents($url));
и внимательно проверьте в выведенном коде наличие нужных строк.

Если их там нет, то возможно они генерируются каким-то скриптом.
1
4 / 4 / 0
Регистрация: 12.07.2010
Сообщений: 160
10.11.2010, 00:09  [ТС]
Этот код есть... но со слэшами
HTML5
1
[ ["<table>\n<tr>\n<td class=\"ingredient sricon\"><a href=\"\/wiki\/Item:Skirmish_Mark\"><img src=\"http:\/\/url\/images\/icons\/item\/skirmish\/it_barter_skirmish_point.png\" class=\"icon\" rel=\"\/index.php?action=ajax&amp;rs=efResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879155768\" \/><\/a><br \/>Give<br \/>x0<\/td><td class=\"ingredient sricon\"><a href=\"\/wiki\/Item:Ann\u00faminas_Mark\"><img src=\"http:\/\/url\/images\/icons\/item\/skirmish\/it_barter_classic_specific_annuminas.png\" class=\"icon\" rel=\"\/index.php?action=ajax&amp;rs=efResourceAjaxWrapper&amp;rsargs[]=item&amp;rsargs[]=1879185087\" \/><\/a><br \/>Give<br \/>x2<\/td><td class=\"ingredient sricon\"><br \/>Give<br \/>x5<\/td>\n<td class=\"ingredient sricon\"><a href=\"\/wiki\/Armour:Cloak_of_the_West-tower\"><img src=\"http:\/\/url\/images\/icons\/item\/back\/eq_cloak_hvy_annuminas_set_lvl65.png\" class=\"icon\" rel=\"\/index.php?action=ajax&amp;rs=efResourceAjaxWrapper&amp;rsargs[]=armor&amp;rsargs[]=1879184913\" \/><\/a><br \/>Get<br \/>x1<\/td>\n<\/tr>\n<\/table>"] ]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2010, 00:09

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

Проверка серверной информации о странице
Хотел посмотреть, какую информацию предоставляет сервер о странице, и для этого я сделал тестовый HTML файл, внедрив в него вот такой РНР...

Сообщение о изменнение информации на странице
Здраствуйте, помогите пожалуйста написать скрипт для проверки изменений на странице. Тоесть у нас есть сайт http://www.example.com/, и...

Вывод информации из MySql на странице
Добрый день вам О великие гуру)))) Мне очень нужна ваша помощь! В общем трабл у меня такой. Необходимо отобразить данные из...

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru