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: [Link mogu videti samo ulogovani korisnici]

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

  1. <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:

[Link mogu videti samo ulogovani korisnici]
3
AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA
AzDRw-xTiIILH42wpajfgA
Pungas.Com - - AutoMoto vijesti, sport, Formula 1

Napravio sam PHP skriptu:

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


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 [Link mogu videti samo ulogovani korisnici]
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=" [Link mogu videti samo ulogovani korisnici] 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:
[Link mogu videti samo ulogovani korisnici]
1
AFQjCNFVCAwOP070r0f0EZkBm5Yfj9r5yQ
&sig2=LBWIL-caH6ZEWzrkho21VQ
Sites Inaccessible in China - Documentation of Internet Filtering

2:
[Link mogu videti samo ulogovani korisnici]
2
AFQjCNEcA--vhR4SXd7w3L4ApxnJkTXPaA
&sig2=kaiXF-17P-9weejPPVRigA
Pungas.Com - U helikopterskoj nesreći poginuo Colin McRae

3:
[Link mogu videti samo ulogovani korisnici]
3
AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA
&sig2=gVXoUEcID10ZW954tA6g1A
Pungas.Com - - AutoMoto vijesti, sport, Formula 1

4:
[Link mogu videti samo ulogovani korisnici]
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: 12544
  • 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

  1. 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: 12544
  • 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.

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

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 1083 korisnika na forumu :: 23 registrovanih, 2 sakrivenih i 1058 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: -[CoA]-, ALEXV, anta, bojank, comi, d.arsenal321, doloress, goran.vvv, Inner-Cell, jeen yuhs, Kototamopeva, lucko1, LUDI, MarsRed, Miloš Popović, nemkea71, opt1, orah, Otto Grunf, Qvazimodo, Soncogor, tachinni, šumar bk2