Pomoc oko Regularnih izraza

1

Pomoc oko Regularnih izraza

offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Pozdrav svima,

Zeleo bih da isparsiram HTML stranicu i pokupim podatke

Adresa je: google.com/search?q=link:www.elitesecurity.org&hl=en&num=42

Za svaki nadjeni item u rekordsetu na stranici postoji blok kao npr:

<h2 class="r"><a href="http://www.pungas.com/?id=1481&prikaz=vijest" class="l" onmousedown="return rwt(this,'','','res','3','AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA','&sig2=AzDRw-xTiIILH42wpajfgA')">Pungas.Com - - AutoMoto vijesti, sport, Formula 1</a></h2>

Za ovaj konkretno primer zeleo bih da pokupim 5 podataka:

pungas.com/?id=1481&prikaz=vijest
3
AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA
AzDRw-xTiIILH42wpajfgA
Pungas.Com - - AutoMoto vijesti, sport, Formula 1

Napravio sam PHP skriptu:

<?php $url = "http://www.google.com/search?q=link:www.elitesecurity.org&hl=en&num=42"; $v = file_get_contents($url); preg_match_all('/\<h2 class="r"\>\<a href="(.*?)" class="l" onmousedown="return rwt(this,\'\',\'\',\'res\',\'(.*?)\',\'(.*?)\',\'( .*?)\')"\>(.*?)\<\/a\>\<\/h2\>/si',$v,$r); $i = 0; while ($i < 42) {     $adresa1 = ($r[$i][0]) ? $r[$i][0] : '0';     $adresa2 = ($r[$i][1]) ? $r[$i][1] : '0';     $adresa3 = ($r[$i][2]) ? $r[$i][2] : '0';     $adresa4 = ($r[$i][3]) ? $r[$i][3] : '0';     $adresa5 = ($r[$i][4]) ? $r[$i][4] : '0';     echo $i+1 . ":<br>" . $adresa1 . "<br>" .$adresa2 . "<br>" .$adresa3 . "<br>" .$adresa4 . "<br>" .$adresa5 . "<hr>";     $i++; }; ?>

Ali mi stalno vraca 0 kao rezultat za svih 42 pronadjena Sad

Da li mi neko moze pomoci i objasniti u cemu je greska - da konacno razumem RE i da nemoram da gnjavim okolo.

Hvala unapred

Aleksandar

Dopuna: 05 Nov 2007 14:33

Znaci pomenuti link google.com/search?q=link:www.elitesecurity.org&hl=en&num=42
vraca result stranu:

some not important code1
<h2 class="r"><a href="http://asp-cyber.law.harvard.edu/filtering/list.html" class="l" onmousedown="return rwt(this,'','','res','1','AFQjCNFVCAwOP070r0f0EZkBm5Yfj9r5yQ','&sig2=LBWIL-caH6ZEWzrkho21VQ')">Sites Inaccessible in China - Documentation of Internet Filtering <b>...</b></a></h2>
some not important code2
<h2 class="r"><a href=" pungas.com/index.php?prikaz=vijest&amp;id=2986" class="l" onmousedown="return rwt(this,'','','res','2','AFQjCNEcA--vhR4SXd7w3L4ApxnJkTXPaA','&sig2=kaiXF-17P-9weejPPVRigA')"> Pungas.Com - U helikopterskoj nesreći poginuo Colin McRae <b>...</b></a></h2>
some not important code3
<h2 class="r"><a href="http://www.pungas.com/?id=1481&amp;prikaz=vijest " class="l" onmousedown="return rwt(this,'','','res','3','AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA','&sig2=gVXoUEcID10ZW954tA6g1A')">Pungas.Com - - AutoMoto vijesti, sport, Formula 1</a></h2>
some not important code4
<h2 class="r"><a href="http://www.pungas.com/forum/potrebne-naocale-t-19770.html" class="l" onmousedown="return rwt(this,'','','res','4','AFQjCNG9e4ZZFF7YNxUfscCxB746gzW8tg','&sig2=fElR-J06DwZ7E9Gcq8KqnA')">Potrebne naocale!!!</a></h2>
some not important code5
itd ... do maksimalno 42
some not important codeX

Znaci ponavljajuca grupa koju ciljam je <h2...> </h2>

Moj skript bi morao da vrati:

1:
asp-cyber.law.harvard.edu/filtering/list.html
1
AFQjCNFVCAwOP070r0f0EZkBm5Yfj9r5yQ
&sig2=LBWIL-caH6ZEWzrkho21VQ
Sites Inaccessible in China - Documentation of Internet Filtering

2:
pungas.com/index.php?prikaz=vijest&amp;id=2986
2
AFQjCNEcA--vhR4SXd7w3L4ApxnJkTXPaA
&sig2=kaiXF-17P-9weejPPVRigA
Pungas.Com - U helikopterskoj nesreći poginuo Colin McRae

3:
pungas.com/?id=1481&amp;prikaz=vijest
3
AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA
&sig2=gVXoUEcID10ZW954tA6g1A
Pungas.Com - - AutoMoto vijesti, sport, Formula 1

4:
pungas.com/forum/potrebne-naocale-t-19770.html
4
AFQjCNG9e4ZZFF7YNxUfscCxB746gzW8tg
&sig2=fElR-J06DwZ7E9Gcq8KqnA
Potrebne naocale!!!

Ali meni vraca samo 0-le



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12524
  • Gde živiš: Južni pol

Nemam iskustva sa regexima u php-u... Nesto slabo... Pogledacu sutra u Perlu, pa cu lako posle da konvertujem u PHP. Mislim da si negde profulao, ali ne bih mogao reci gde (ovako napamet) dok ne probam i sam...



offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Cudo je ovaj program ...

Nekako sam selektovao sta zelim ali kad ubacim taj RE u moj kod - opet mi ispisuje 0 Sad


offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

hehe uravo nesto radim ovih dana slicno.
samo sto me nervira da koristim reg vec koristim
strpos, stristr, substr

probaj mozda i ti tako... da racunas poziciju da brises visak da strpas u promenljivu samo korisno Smile

offline
  • Pridružio: 01 Apr 2005
  • Poruke: 797
  • Gde živiš: Niš

Ti regex coachovi ne znam kako rade. ovaj addon za firefox ne pokazuje bas tacno, aj imam sarena isqstva.

offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Svemirko ::hehe uravo nesto radim ovih dana slicno.
samo sto me nervira da koristim reg vec koristim
strpos, stristr, substr

probaj mozda i ti tako... da racunas poziciju da brises visak da strpas u promenljivu samo korisno Smile
Hehe ... da ne pravimo istu stvar Smile

Ma odradio sam sa pos-ovaj str-onaj ... ali u kolicinama koje mi trebaju - ubio bi server. Ideja je da napravim sa RE, stavim u cronjobs na serveru da se periodicno vrti i skuplja u vremenima kad nije opterecenje - ali opet bolje da manje gnjavim Apache. Najbolje bi dosao Perl, ali kad vec nisam sa njim na Ti - bar da mu se koliko toliko priblizim Smile

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

ne pravimo istu stvar Smile ali jako slicnu... i ja koristim google i analiziram onaj njegov po malo mucni kod... sve im je u jednom redu, pa mi oci ispale dok sam to lepo razclanio sta je sta Smile

u svakom slucaju, ja sam krenuo sa onim funkcijama koje sam ti pomenuo, ali jos uvek ni ja nisam sve zavrsio... malo mi brljavi... pogotovo sto nisam ni kod ispita u svim situacijama, a posto gledam broj pozicije i slicno pravi mi veliku muku razlicit kod... evo upravo se cimam sa onim linkovima koji su pomereni u desno za style="margin-left: 2.5em;"

ne znam ni ja sta cu da radim.... mrzim reg ali ko zna mozda cu i njega morati da koristim Smile

p.s. a sto se tice servera i zahtevnosti jos se nisam cimao oko toga.... valjda ce izgurati jer ovo sto sam ja radio while petlju zavrsi za 5 sekundi Razz

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12524
  • Gde živiš: Južni pol

Probao sam u PHPu... Ali ova implementacija regexa je drugacija nego u Perlu... Ne znam sta je problem... Escape sekvence? Jedino sto mogu reci sigurno da ti regexi ne ferceraju...

Izgubih sat vremena na to... Neutral

Ali ja nisam iskusan web *gramer. Smile Vidim da ste vec nasli prihvatljivo resenje... Licno, meni bi prvo palo napamet da to odradim u Perlu. Razz

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

tvoj regexp verovatno radi, medjutim, ako pogledas source fajla koji si izvukao i u recimo ff-u uradis search za strig koji si ovde napisao da ti treba, necas dobiti ni jedan rezultat.
Ja sam uradio mali test, i evo postovacu ga ovde, pa se i sam uveri.

$url = "http://www.google.com/search?q=link:www.elitesecurity.org&hl=en&num=42"; $v = file_get_contents($url); preg_match_all('{<h2 class=r>(.*?)</h2>}',$v,$r); $i = 0; while ($i < 42) {     $adresa1 = ($r[1][$i]) ? $r[1][$i] : '0';     echo $i+1 . ":<br>" . $adresa1 . "<br>\n";     $i++; };

offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Blood ::tvoj regexp verovatno radi, medjutim, ako pogledas source fajla koji si izvukao i u recimo ff-u uradis search za strig koji si ovde napisao da ti treba, necas dobiti ni jedan rezultat.
Ja sam uradio mali test, i evo postovacu ga ovde, pa se i sam uveri.


Cek sad ... Uzmem source code od te stranice ... i stavim je u txt na lokalu ... Ako taj RE nadje u ovom alatu - znaci da bi morao da nadje i online ili gresim. Takodje i ovaj tvoj primer je koliko ja znam (a malo znam) o RE najjednostavniji moguci RE. On u ovom programu isto lepo nadje kao i moj kod (ali celinu, ne detalje) ali u PHP ispise 0.

Gde je onda greska!?

Ko je trenutno na forumu
 

Ukupno su 776 korisnika na forumu :: 6 registrovanih, 0 sakrivenih i 770 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bojank, LUDI, stegonosa, Valter071, wizzardone, šumar bk2