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: 12487
  • 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: 12487
  • 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 964 korisnika na forumu :: 57 registrovanih, 9 sakrivenih i 898 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: _Sale, A.R.Chafee.Jr., atmel, bankulen, Bobrock1, bojank, bojankrstc, bojcistv, bokisha253, brundo65, cemix, crnitrn, croato, darcaud, darkangel, Denaya, Dimitrise93, Dorcolac, DPera, ginjica, GORDI, Griffon vulture, ikan, Ilija Cvorovic, Ivan Campo, Japidson, Joco Skljoco, Karla, krkalon, Krvava Devetka, Kubovac, kybonacci, Levi, mercedesamg, Mercury, Mi lao shu, milimoj, milutin134, Mixelotti, Nemanja.M, Parker, Petarvu, raketaš, repac, royst33, savaskytec, Sir Budimir, slonic_tonic, stalja, stegonosa, Stoilkovic, theNedjeljko, vlad4, vobo, voja64, zzapNDjuric99, 125