Pomoc oko Regularnih izraza

2

Pomoc oko Regularnih izraza

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Evo ga izraz samo obrati paznju da google mjenja js pa vise ne stoji "...rwt(this..." vec "...clk(this.href...", a moze bez toga tako da ti ovaj izraz izvlaci i to.

"/<h2 class=r><a href=\"(.*?)\" class=l+( onmousedown=\"return (.*?)\((.*?),'(.*?)','(.*?)','(.*?)','(.*?)','(.*?)'\)\")?>(.*?)<\/a><\/h2>/"

znaci

<?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 (.*?)\((.*?),'(.*?)','(.*?)','(.*?)','(.*?)','(.*?)'\)\")?>(.*?)<\/a><\/h2>/",$v,$r); foreach($r[1] as $int => $link)    print "<a href='{$link}'>{$r[10][$int]}</a><br>"; ?>



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Konacno sam nahvatao Linux/Perl/... administratora u firmi i ubi covek skript za 10 minuta Neutral

Evo resenje pa kome treba nek uzme. Sta mislite o resenju?

PS: Nemojte da odkomentarisete zakomentarisani red da vam ne rokne IE/FF Smile

<?php

function getpage($url) {
$data = file_get_contents($url);
$nummatches = preg_match_all("/<h2 class=r><a href=\"([^\"]+)\" class=l>(.+?)<\/a><\/h2>.*?<font size=-1>(.+?)<br><span class=a>/i", $data, $matches);
$numresults = preg_match("/Results <b>([0-9]+)<\/b>.*?<b>([0-9]+)<\/b> of about <b>([0-9,]+)<\/b> linking to/i", $data, $resmatches);

echo "start: ".$resmatches[1]."\n<br/>";
echo "end: ".$resmatches[2]."\n<br/>";
echo "total number of results: ".$resmatches[3]."\n<br/>";

if (preg_match("/<a href=\"([^\"]+)\"><img src=\/intl\/en\/nav_next.gif width=100 height=26 alt=\"\" border=0><br>Next<\/a>/i", $data, $nextmatch)) {
echo "<br/>Next link: ".$nextmatch[1]."\n<br/><br/>";
}

echo "$nummatches matches\n\n<br/><br/>";

for ($i = 0; $i < $nummatches; $i++) {
echo "title: ".$matches[2][$i]."\n<br/>link: ".$matches[1][$i]."\n<br/>";
echo "descr: ".$matches[3][$i]."\n<br/>\n<br/>";
}

if (isset($nextmatch[1])) {
// getpage("http://www.google.com".$nextmatch[1]);
}

}

function searchdetails($site) {
$url = "http://www.google.com/search?q=link:$site&hl=en&num=42";
getpage($url);
}

searchdetails("www.elitesecurity.org");

?>

Dopuna: 06 Nov 2007 14:43

Hvala svima. Nadam se da ce ovaj topic koristiti i drugima



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

probao sam ovaj program sa slike ali mi nesto ne ide....
trebali bi mi ovi divovi sa rezultatima...
[Link mogu videti samo ulogovani korisnici]

mogu li ih preko reg izvuci u promenljive

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

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

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

@Blood
svaka cast i ziv bio Smile

nego ovako imam samo jedan problem (moja greska sto nisam mozda napomenuo).

trebaju mi i linkovi koji su u
<div class=g style="margin-left:2.5em">
evo primer kako to i izgleda (fokusiran lik sadrzi style="margin-left:2.5em" u div tagu


ako ti nije preveliki cim da mi preradis ovo... znacilo bi mi.
tnx

Dopuna: 06 Nov 2007 22:10

p.s.
dodatni problem moze biti sto se taj
<div class=g style="margin-left:2.5em"> nalazi u okviru glavnog diva
<div class=g>

ne znam koliko je ovo izvodljivo sad

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

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

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

lol
a ja sam probao sa

preg_match_all('{<div class=g .*?>(.*?)</div>}',$v,$r);

jedina razlika je sto sam stavio space Sad

hvala puno blood

offline
  • Bojan  Male
  • Prijatelj foruma
  • Pridružio: 13 Nov 2003
  • Poruke: 11059
  • Gde živiš: Novi Sad

Ala ovaj Blood razbija Smile

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

Imam 2 kratka pitanja:

Pitanje 1. Za sledeci kod:

<li id="li5" class="yscheven no1" onmouseover="javascript:liOver(this,5)" onmouseout="javascript:liOut(this,5)"> <a class="yschttl" href="http://rds.yahoo.com/blog/razno/countposts-v-10-wordpress-plugin/">CountPosts v 1.0 - WordPress Plugin - Ðukijev blog</a> <address class="no1">   <span id="rslt1details5" class="ysrsltsdetails" style="position:inherit;display:none;"><span><a href='http://rds.yahoo.com/sitereg?.scrumb=0&amp;crumb=&amp;txtSiteUrl=http%3A%2F%2Fdjuki.padrino.rs%2Fblog%2Frazno%2Fcountposts-v-10-wordpress-plugin%2F&amp;btnRegSite'>Authenticate itd itd

Imam regularni izraz: (.*)\btxtSiteUrl=(.*)&amp;

Koji mi vrati:

<span id="rslt1details5" class="ysrsltsdetails" style="position:inherit;display:none;"><span><a href='http://rds.yahoo.com/sitereg?.scrumb=0&amp;crumb=&amp;txtSiteUrl=http%3A%2F%2Fdjuki.padrino.rs%2Fblog%2Frazno%2Fcountposts-v-10-wordpress-plugin%2F&amp;

Znaci nece da ovaj (.*) ode jos gore (a po meni bi trebalo da ode Smile) da bih osim linka uhvatio i onaj text COUNTPOST...

Probao sam nesto ovako:
">(.*)<\/a>(.*)\btxtSiteUrl=(.*)&amp;
da bih uhvatio taj text ispred </a> pa onda 'bas me briga' pa txtSiteUrl= i onda da uhvatim link i na kraju da je &amp; Ali nece da radi ... U cemu je greska? Kako da mu kazem da se ne osvrce na nove redove i ne stane na kraju tog reda?

Pitanje 2:

Napravio sam parser u PHP (nemojte se smejati jer je pocetnicko resenje Smile) koji iz pomenutog koda izvlaci te podatke:

$nummatches = preg_match_all("/<a class=\"yschttl\" href=\"[^\"]+\">(.*?)<\/a>([^\"]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=(.*?)&amp;/i", $data, $matches);

I to lepo meni ispisuje parametar 1 i parametar 10 - tacno sto hocu. Znam da sam mogao da nestavljam te zagrade pa bih imao samo 2 parametra ali posto sam nesto poceo da kontam o RE tek juce - neka zagrada tu inace cu se pogubiti skroz.

Podpitanje 1: Da li ovaj RE radi sporije zbog te gomile parametara koje vracam? Da li bi radio brze da sam imao samo 2 parametra?
Podpitanje 2: U mom resenju imam 7 puta ([^\=]+)= ... Da li se to nekako moze skratiti i da mu dam {7} iza tog koda?

Hvala

Pozdrav

Ljuba

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

ljuba973 ::
Podpitanje 1: Da li ovaj RE radi sporije zbog te gomile parametara koje vracam? Da li bi radio brze da sam imao samo 2 parametra?


mozes li da testiras ?
ja sam testirao i gledao razlike....
strpas to u for petlju da odradi jedno 20-ak puta (ili vise zavisi koliko je potrebno da se izvali razlika) i vidis koji ce brze da se zavrsi Smile

Ko je trenutno na forumu
 

Ukupno su 3723 korisnika na forumu :: 96 registrovanih, 8 sakrivenih i 3619 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 015, 4channer, A.R.Chafee.Jr., advokat84, AleksSE, ALFASPORTIVO, alternator, alzir86, amstel, Ba4e, Banovo Brdo, Bgd123, Blair, Bobrock1, bojan_t, boromir, Bosnjo, bpop, Cirkon, CrazyDiablo, curiosity, Dejan_vw, Djokislav, djonsule, Dogma21, Dovla, dradex, DragoslavS, eagle.rs, EXIT78, Feller, Georgius, gobrad, Gogi_avio, goran.vvv, Goran_, Grebostrek, HrcAk47, Ikica977, Ivan Campo, Jeremija98, JOntra, Jozo74, kaput21, keyz, klepesina, lafa008, LUDI, Macalone, marko.markovic, Marko1238, Marko43, mercedesamg, mikidragi, milan47, milbos, mile.ilic75, MiljanXD, Milometer, mino bosanac, mkukoleca, moldway, N.e.m.a.nj.a., Natuzzi, nebkv, Nele79, nelezele, nenooo, Otto Grunf, ozzy, Panter, Papadubi, Parker, partyzan, pera bager, Pilence, Rakenica, Remarqe, Romibrat, sap, Sir Budimir, sslay, starlights, Tamna_strana_Meseca, tamno.nebo, TBoy, theNedjeljko, trutcina, vaci, VJ, VP 115993 a, Zastava, Zimbabwe, zokizemun, Zrcalo, zziko