[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как можно распарсить страницу
kent666
У меня есть страница чата.
<ul><a id="link64446"></a><table><tr><td valign="top"><span class="ft_post">ну у всех восприятие разное. </span><br><a target="_blank"
href="/club/elesha2112/">elesha2112</a><span class='sm pale'> © (10.10.2011 Пн 20:44)</span>
<script
type="text/javascript">writeUnderPost(64446,'school','elesha2112',0);</script>
</td></tr></table><br>



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



Спустя 9 минут, 10 секунд (13.10.2011 - 16:23) Winston написал(а):
Покажи больше кода и, что нужно вытянуть ?

Спустя 7 минут, 35 секунд (13.10.2011 - 16:31) kent666 написал(а):
надо вытянуть следующую информацию
логин и сообщение
т.е. логин то что находится в writeUnderPost(64476,'school','ЛОГИН',0)
а сообщение то что находиться в <span class="ft_post">ТЕКСТ</span>


<ul><a id="link64476"></a><table><tr><td valign="top"><span class="ft_post">я живу в Беларуси у нас другие з\п и другой уровень дохода</span><br><a target="_blank" href="/club/bantik/">Н@тк@</a><span class='sm pale'> © (10.10.2011 Пн 21:03)</span><script type="text/javascript">writeUnderPost(64476,'school','bantik',0);</script></td></tr></table><br>
<ul><a
id="link64482"></a><table><tr><td valign="top"><span class="ft_post">ну так и у наших такого нет дохода, может быть в отдельно взятых редких школах, но кто-то сказал, а кто-то прочитает и поверит</span><br><a target="_blank" href="/club/elesha2112/">elesha2112</a><span class='sm pale'> © (10.10.2011 Пн 21:07)</span><script type="text/javascript">writeUnderPost(64482,'school','elesha2112',0);</script></td></tr></table><br>


Эти данные надо вытянуть в массив такого вида
логин => текст,
логин => текст,
...
логин => текст,

Т.Е.
bantik =>я живу в Беларуси у нас другие з\п и другой уровень дохода,
elesha2112 => ну так и у наших такого нет дохода, может быть в отдельно взятых редких школах, но кто-то сказал, а кто-то прочитает и поверит

Спустя 11 минут, 21 секунда (13.10.2011 - 16:42) Winston написал(а):
Легко :)
Свернутый текст
$str = "
<ul><a id=
\"link64476\"></a><table><tr><td valign=\"top\"><span class=\"ft_post\">я живу в Беларуси у нас другие з\п и другой уровень дохода</span><br><a target=\"_blank\" href=\"/club/bantik/\">Н@тк@</a><span class='sm pale'> © (10.10.2011 Пн 21:03)</span><script type=\"text/javascript\">writeUnderPost(64476,'school','bantik',0);</script></td></tr></table><br>
<ul><a id=
\"link64482\"></a><table><tr><td valign=\"top\"><span class=\"ft_post\">ну так и у наших такого нет дохода, может быть в отдельно взятых редких школах, но кто-то сказал, а кто-то прочитает и поверит</span><br><a target=\"_blank\" href=\"/club/elesha2112/\">elesha2112</a><span class='sm pale'> © (10.10.2011 Пн 21:07)</span><script type=\"text/javascript\">writeUnderPost(64482,'school','elesha2112',0);</script></td></tr></table><br>
"
;

preg_match_all('#<span class="ft_post">(.*)</span>#isuU', $str, $mess);
preg_match_all("#writeUnderPost\(\d+,'.*','(.*)',\d+\)#isuU", $str, $login);

echo '<pre>' . print_r($mess, 1) . '</pre>';
echo '<pre>' . print_r($login, 1) . '</pre>';

$result = array_combine($login[1], $mess[1]);
echo '<pre>' . print_r($result, 1) . '</pre>';

Спустя 31 минута, 53 секунды (13.10.2011 - 17:14) kent666 написал(а):
Winston можешь посмотреть а то что то не работает в классе
<?php

class
SVV_Parser
{
public $text = "";

public function __construct()
{
$this->text= $text;
}

public function load_page($page, $format="UTF")
{
$this->page=$page;
$this->format=$format;
$this->content=(@file_get_contents($this->page))? file_get_contents($this->page) : die("страница не загружена!");
if ($format!="UTF") $this->content=iconv($format, "UTF-8", $this->content);
}

public function parser($expression)
{
$this->expression=$expression;

preg_match_all($this->expression, $this->content, $this->$text);

return $this->text;
}

public function add()
{
return array_combine(parser('#<span class="ft_post">(.*)</span>#isuU'), parser("#writeUnderPost\(\d+,'.*','(.*)',\d+\)#isuU"));
}
}


$obj = new SVV_Parser();

$obj -> load_page("http://www.kleo.ru/cgi-bin/webboard/thread.fcgi?http://www.kleo.ru/webboar d/school/639/63917.shtml", "CP1251");
print_r ($obj -> add());

Спустя 3 минуты, 26 секунд (13.10.2011 - 17:17) kent666 написал(а):
пишет ошибку в строке
return array_combine(parser('#<span class="ft_post">(.*)</span>#isuU'), parser("#writeUnderPost\(\d+,'.*','(.*)',\d+\)#isuU"));

Спустя 5 минут, 34 секунды (13.10.2011 - 17:23) Winston написал(а):
Ну и намудрил же ты однако :blink:
Держи ;)
class SVV_Parser
{
public $text = "";

public function __construct()
{
// $this->$text= $text;
}

public function load_page($page, $format="UTF")
{
$this->page=$page;
$this->format=$format;
$this->content=(@file_get_contents($this->page))? file_get_contents($this->page) : die("страница не загружена!");
if ($format!="UTF") $this->content=iconv($format, "UTF-8", $this->content);
}

public function parser($expression)
{
$this->expression=$expression;

preg_match_all($this->expression, $this->content, $this->text);

return $this->text[1];
}

public function add()
{
return array_combine($this->parser("#writeUnderPost\(\d+,'.*','(.*)',\d+\)#isuU"), $this->parser('#<span class="ft_post">(.*)</span>#isuU'));
}
}


$obj = new SVV_Parser();

$obj -> load_page("http://www.kleo.ru/cgi-bin/webboard/thread.fcgi?http://www.kleo.ru/webboar d/school/639/63917.shtml", "CP1251");
echo '<pre>'.print_r ($obj -> add(), 1).'</pre>';

Спустя 4 минуты, 43 секунды (13.10.2011 - 17:28) kent666 написал(а):
спасибо. А то уже голова не варит!!! )))
Быстрый ответ:

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