Задать вопрос

Как спарсить сообщение с форума с помощью PHP Simple HTML DOM Parser?

Нуждаюсь в помощи, нужно парсить текст сообщений с ветки форума только 1 автора.

К примеру с форума

только автора "sakakolm"
  • Вопрос задан
  • 3192 просмотра
Подписаться 6 Средний Комментировать
Решения вопроса 1
bboytiwst
@bboytiwst
Советовал бы посмотреть в сторону phpQuery, особенно если доводилось работать с jQuery

Вариант рабочий, проверял
Только с кодировкой лень играться было, но думаю это уже не составит проблем :)
<?
require_once 'phpQuery.php';

$url = 'http://ruforum.mt5.com/threads/2494-obzor-valyutnogo-rinka-za-nedelyu';

$userName = 'almostsuper';


$htmlPage = file_get_contents($url);
$html = phpQuery::newDocument($htmlPage);

$posts = $html->find('.postdetails');


foreach ($posts as $var) {

	$userPost = pq($var)->find('.username > strong:contains('.$userName.')');
	if($userPost->text()==$userName)
	{
		echo '<h1>'.$userName.'</h1>';
		$postBody = pq($var)->find('.postbody');
		echo $postBody.'<hr/>';
	}

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
поискать пример использования dom parser'а.
Или сказать в чем проблема, послужившая для написания сюда вопроса.
Ответ написан
@Morgan_sh Автор вопроса
не могу задать регулярное выражение на парс сообщения с условием id= пользователя
Ответ написан
peter23
@peter23
Одним выражением тут не обойтись. Как-то так:
$rows = $html->find('ol#posts > li > div.postdetails > div.userinfo > div.username_container > div > a.username[href*=3606-sakakolm]');
foreach($rows as $row) {
	$msg_html = $row->parent()->parent()->parent()->next()->find('div.postrow > div.content');
}

Вместо кучи parent() хорошо бы использовать closest(), но вроде бы в PHP Simple HTML DOM Parser его нет, как и parents().

Код не тестировал, возможны ошибки. Но идея думаю очевидна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 дек. 2024, в 17:16
3000 руб./за проект
27 дек. 2024, в 16:58
1000 руб./за проект
27 дек. 2024, в 16:48
5000 руб./за проект