[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регуляркой
chupakabre
Вечер добрый, пытаюсь сделать регулярку для

Цитата
http://www.liveinternet.ru/rating/ru/humor/index.html


нужна статистика просмотров, которая сидит в


<td align="right" width="100">статистика</td>


Пишу таким образом


preg_match_all('!<td.*align="right".*width="100">(.*)</td>!Usi', $html, $stat)


Но почему то не получаеться получить то что надо.




Спустя 3 минуты, 44 секунды (18.07.2011 - 21:57) Winston написал(а):
Так хотел ?
$str = '<td align="right" width="100">статистика</td>
<td align="right" width="100">статистика 2</td>
<td align="right" width="100">статистика 3</td>'
;

preg_match_all("#<td[^>]+>(.*)</td>#isuU", $str, $matches);

echo '<pre>'.htmlspecialchars(print_r($matches, true)).'</pre>';




Спустя 1 минута, 19 секунд PHPprogrammer написал(а):
chupakabre
Кстати твой пример тоже работает smile.gif

Спустя 4 минуты, 53 секунды (18.07.2011 - 22:02) chupakabre написал(а):
Да но под такую регулярку подходят еще куча значений.



Спустя 58 секунд chupakabre написал(а):
Он пол страницы выдает.

Спустя 2 минуты, 38 секунд (18.07.2011 - 22:05) Winston написал(а):
Цитата (chupakabre @ 18.07.2011 - 22:02)
Да но под такую регулярку подходят еще куча значений.

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

Спустя 6 минут, 47 секунд (18.07.2011 - 22:12) chupakabre написал(а):
Так как я могу создать таблицу, если я пытаюсь парсить ли.ру

Мне нужна ссылка на ресурс + статистика...Ссылки я вытаскиваю без проблем, а вот статистику уже 3ий час не могу.

Спустя 11 минут, 31 секунда (18.07.2011 - 22:23) Winston написал(а):
Вот так получилось:
$parse = file_get_contents('http://www.liveinternet.ru/rating/ru/humor/index.html');

preg_match_all("#<TD align=right width=100>([0-9,]+)</td>#is", $parse, $matches);

echo '<pre>'.htmlspecialchars(print_r($matches, true)).'</pre>';

Спустя 4 минуты, 37 секунд (18.07.2011 - 22:28) chupakabre написал(а):
Спасибо, так и у меня работает не сочти за наглость ещё вопрос, возможно ли написать регулярку, что бы она сразу брала и ссылку на ресурс и статистику ?

Т.е.

'!<a.*href="http://(.*)" class=a1>.*</a>!Usi'

Это обьеденить с этим

"#<TD align=right width=100>([0-9,]+)</td>#is"


Что бы не работать с двумя массивами, а работать с одним.

Спустя 14 минут, 28 секунд (18.07.2011 - 22:42) Winston написал(а):
Цитата (chupakabre @ 18.07.2011 - 22:28)
возможно ли написать регулярку, что бы она сразу брала и ссылку на ресурс и статистику

Вряд ли, и это будет слишком геморно
Можно так сделать, и на выходе получишь 1 массив
$parse = file_get_contents('http://www.liveinternet.ru/rating/ru/humor/index.html');
preg_match_all('!<a.*href="http://(.*)" class=a1>.*</a>!Usi', $parse, $links);
preg_match_all("#<TD align=right width=100>([0-9,]+)</td>#is", $parse, $stat);
$result = array_combine($links[1], $stat[1]);
echo '<pre>'.htmlspecialchars(print_r($result, true)).'</pre>';

Спустя 6 минут, 55 секунд (18.07.2011 - 22:49) chupakabre написал(а):
Спасибо, сейчас попробую.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.