PCRE :-( ну блин

  • Автор темы Silverstorm
  • Дата начала

Silverstorm

Guest
PCRE :-( ну блин

ну что за фигня почитал статьи на этом сайты (прекрасные) думаю я все могу! Даже дома на локалке сделал парсинг результатов поиска по-сайту,а вот сейчас ничего не выходит.я тожно неправильно правило написал,но не знаю где ошибка ;-(
помогите.

вот код результатов яху-поиска:

PHP:
<li><div><a class=yschttl  href="http://rds.yahoo.com/
S=2766679/K=baranek/v=2/SID=e/
l=WS1/R=1/IPC=eu/SHE=0/H=3/SIG=117bb3fv5/*
-http%3A//named24.s5.com/baranek.html">
<b>Baranek</b>
 Name Search</a> 
<a href="http://rds.yahoo.com/
S=2766679/
K=baranek/v=2/SID=e/l=WS1/
R=1/IPC=eu/SHE=0/H=3/
NW=1/SIG=117bb3fv5/*-http%3A//named24.s5.com/baranek.html" 
target=_blank>
<img src="http://us.i1.yimg.com/
us.yimg.com/i/us/sch/bn/nw2.gif"
 height=11 width=11 border=0 alt=
"Open this result in new window">
</a>
</div>
<div class=yschabstr>
Search for book by <b>Baranek</b>
. ... Books by <b>Baranek</b>
 may be good for a break from life, but burning ... Then when you are ready to relax, <b>Baranek</b>
 will be there waiting for you. ...</div>
<em class=yschurl>named24.s5.com/
<b>baranek</b>.html
</em>
- <em>12k</em> 
 
 - <a href="http://rds.yahoo.com/
S=2766679/K=baranek/
v=2/SID=e/l=WS5/R=1/SIG=148gibdro/*-http%3A//216.109.117.135/search/cache?p=baranek&toggle=1&ei=UTF-8&u=named24.s5.com/baranek.html
&w=baranek&d
=6E26D69F01&icp=1&.intl=us">Cached</a>
 - <a href="http://rds.yahoo.com/S=2766679/
K=baranek/
v=2/SID=e/l=WS3/R=1/SIG=1378q07e8/*-http%3A//search.yahoo.com/search?p=baranek&toggle=1
&ei=UTF-8&fr=FP-tab-web-t&vst=0&vs=named24.s5.com">
More from this site</a>

а вот мое правило и кусочек кода модуля поиска:
PHP:
  function parse_results(&$output) {
        #echo $output;  # debug
        $results = array();
        if(preg_match_all('{<li><div><a [^>]+>(.+?)</a><a [^>]+><img [^>]+></a></div><div [^>]+>(.+?)</div><em [^>]+>(.+?)</em>}is',$output,$matches,PREG_SET_ORDER)) {
            $last_match = '';
            foreach($matches as $r) {
                $result = array(
                    'real_url' => 'http://' . html_decode($r[3]),
                    'follow_url' => 'http://' . html_decode($r[3]),
                    'title' => html_decode($r[1]),
                    'description' => html_decode($r[2]),
                );
                array_push($results,$result);
                $last_match = &$r[0];
            }

ну где они мои ошибки ;-(
 

wizard

Новичок
наверное в коде, а может и нет :)

А с чего это перестал работать?
Может ответ приходит в другом формате...

ничего плохого не выдаёт?
 

SelenIT

IT-лунатик :)
...пробельные символы между закрывающим тегом ссылки и открывающем тегом следующей?
 

svetasmirnova

маленький монстрик
Может я тормоз.
А что в результате получиться ДОЛЖНО?
А исходные данные - это
>код результатов яху-поиска
или нет?
 

Silverstorm

Guest
хех нет не дает ошибок просто не возвращает никаких результатов.В скрипте ошибок (смертельных) точно нет,он платный,да и с поставленными модулями все нормально пашет.Но как только поисковик поменяет дизайн в темлейтах результатов поиска, все модуль перестанет работать,поэтому автор и предупреждал типа без каждомесячной работы не обойтись.Дома написал сам пару модулей,все работало.
Вот например:

http://search.msn.com/results.aspx?FORM=SRCHWB&q=czystą głupotą - результаты поиска на МСН

а вот результаты на моем беда-сайте:

http://ixplayer.info/search/index.php?qry_str=czystą+głupotą&geo=eu&language=pl&extra_qry=&per_page=10&category=internet

-~{}~ 21.12.04 19:22:

тобишь модуль мсн прекрасно и без траблов пашет.
Вот кусок кода(остальное не важно) составленный для мсн(автором скрипта):

PHP:
if(preg_match_all('{<li><a href="([^"]+)" class="t">(.+?)</a><div><span class="d">(.+?)</span><br/>}is',$output,$matches,PREG_SET_ORDER)) {

            $last_match = '';

            foreach($matches as $r) {

                $result = array(

                    'real_url' => $r[1],

                    'follow_url' => $r[1],

                    'title' => html_decode($r[2]),

                    'description' => html_decode($r[3]),
да кстати это значит: html_decode($r[3]) ????

после просмотра в блокноте хтмл кода результатов,становится понятно что все правильно,и что за этим следует все работает как надо ;-)

написал свой для парсинга результатов Нетспринта(местный польский поисковик): вот правило:
if(preg_match_all('{<h1><a href="([^"]+)">(.+?)</a></h1><p>(.+?)<br></p><p class="opis">}is'
,$output,$matches,PREG_SET_ORDER)) {

$last_match = '';

foreach($matches as $r) {

$result = array(

'real_url' => $r[1],

'follow_url' => $r[1],

'title' => html_decode($r[2]),

'description' => html_decode($r[3]),


а тут можно подглядеть результаты поиска: http://netsprint.pl/search?qt=jebane+Netsprint&nm=20


но мне возвращается только тишина этим модулем.
Помогите ;-(
Ага туториал по модулям тут:
http://ixplayer.info/search/mod.htm
 

svetasmirnova

маленький монстрик
Выражения
>'{<li><a href="([^"]+)" class="t">(.+?)</a><div><span class="d">(.+?)</span><br/>}is'
и
>'{<h1><a href="([^"]+)">(.+?)</a></h1><p>(.+?)<br></p><p class="opis">}is'
идентичны за исключением обработки форматирования: ищите изменённое форматирование или переписывайте выражение, чтобы сделать его более универсальным
>да кстати это значит: html_decode($r[3]) ????
вызов пользовательской функции
>а вот результаты на моем беда-сайте:
>http://ixplayer.info/search/index.p...tegory=internet
Displaying search results page 1 of 5 with results from 1 to 10:


1. RMF FM - Radio Muzyka Fakty [Nowe okno]
... Nazwalbym to czysta glupota, paplaniem, a nie swiadomym dzialaniem w kierunku ostrzegania ... to ja nazwalbym to czysta glupota, paplaniem, a nie swiadomym dzialaniem ...
-- http://www.rmf.fm/wiadomosci?id=65238&loc=1


2. ^Ureshii AnzenPin^ [Nowe okno]
... nawet po polsku ze mna rozmawial. Nie czysta polszczyzna, ale taka, ze bylo slychac, ze ... A juz najwieksza glupota bylo robic awanture o cos, co napisalam pol ...
-- http://anzen-pin.blogspot.com/2004_03_01_anzen-pin...


3. .:[ Terapia Manualna ]:. [Nowe okno]
"Pobieranie nauk u wielu mistrzow wskazuje na madrosc i pokore adepta. Opieranie sie wylacznie na ich autorytecie jest czysta glupota..." Damian Wilkowski
-- http://www.terapia-manualna.com/
Вроде нормально всё

На будущее.
Пишите исходную строку и ожидаемый результат: разбирать файл, полученный по ссылке, никто не будет.
 

Silverstorm

Guest
ок. а вообще сам разобрался в чем дело.Все дело в том что когда я регулярное выражение писал,то не учел переносов строки и кучи пробелов между ними. ;-)
 
Сверху