[ ljuba @ 04.11.2007. 18:09 ] @
Pozdrav

Ako imam fajl a.txt koji je sadrzine:

ime=pera#prezime=peric#adresa=neka1<br>
ime=mika#prezime=mikic#adresa=neka2<br>
ime=zika#prezime=zikic#adresa=neka3<br>
...

i ako imam u mom php skriptu:

Code:
$page = file_get_contents('a.txt');
preg_match_all('/ime=(.*?)#prezime/si', $page, $result1);
preg_match_all('/prezime=(.*?)#adresa/si', $page, $result2);
preg_match_all('/adresa=(.*?)\<br\>/si', $page, $result3);
$ime = ($result1[1]) ? $result1[1] : '0';
$prezime = ($result2[1]) ? $result2[1] : '0';
$adresa = ($result3[1]) ? $result3[1] : '0';


Tada posle idem sa $result1[$i] kroz petlju i ispisujem imena - takodje i za prezimena i adrese. To bi trebalo da radi OK.

Pitanja:
1. Kako da znam koliko sam nasao imena (duzina niza) a da nemoram da idem sa foreach kroz niz?
2. Kako da promenim preg_match_all komandu da bi u jednoj liniji dobio sva 3 niza - result1, result2 i result3?

Hvala
[ ColdKeyboard @ 04.11.2007. 18:21 ] @
Koristi funkciju count da izbrojis unose.
http://www.php.net/count

stavi regexp da ti izgleda ovako"
preg_match('/ime=(.*?)#prezime=(.*?)#adresa=(.*?)<br>/si', $page, $regs);

$result[0] ti je prva linija koja ima match,
$result[0][0] ti je ime u prvoj liniji
$result[0][1] ti je prezime u prvoj liniji
$result[0][2] ti je adresa u prvoj liniji

$result[1][0] ti je ime u drugoj liniji

itd... za ovo ti je najbolje da uradis foreach petlju pa da radi ispis
svih imena koje ima u $result

Ako ti jos nesto treba ili imas jos nesto nejasno pitaj...

--
-==ColdKeyboard==-
www.MrdniSe.com
www.SasaKaranovic.com
[ ljuba @ 04.11.2007. 18:29 ] @
Hvala puno.

Cini mi se da ce biti OK, ali javljam se cim probam.

PS: Ti RE su mi stvarno ko iz druge dimenzije da su pali :)

Puno pozdrava
[ ljuba @ 05.11.2007. 13:57 ] @
Znaci pomenuti link http://www.google.com/search?q...urity.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=" http://www.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>

PHPSkript je:

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


Moj skript bi morao da vrati:

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

2:
http://www.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:
http://www.pungas.com/?id=1481&amp;prikaz=vijest
3
AFQjCNHOKd-B2TrSznDjSfLAvl2kbcz_pA
&sig2=gVXoUEcID10ZW954tA6g1A
Pungas.Com - - AutoMoto vijesti, sport, Formula 1

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

Ali meni vraca samo 0-le

[ Nemanja Avramović @ 05.11.2007. 15:37 ] @
Jedan savet: Skini Regex Coach pa u njemu testiraj svoje izraze
[ ljuba @ 05.11.2007. 17:10 ] @
Citat:
Nemanja Avramović: Jedan savet: Skini Regex Coach pa u njemu testiraj svoje izraze ;)
Cudo je ovaj program ...

Nekako sam selektovao sta zelim ali kad ubacim taj RE u moj kod - opet mi ispisuje 0 :(
[ ColdKeyboard @ 05.11.2007. 20:28 ] @
Ako radis preg_match_all() pokreni taj kod onda probaj da radis print_r($result) da vidis da li uopste dobijas neku vrijednost iz tog preg_match_all ako dobijes array() znaci da ti izraz nije tacan ili ne radi...
[ Nemanja Avramović @ 05.11.2007. 21:47 ] @
Nisam podrobnije gledao, ali obrati pažnju na eskejpovanje navodnika, apostrofa i ostalih karaktera koji bi trebalo da se eskejpuju. Meni je to često pravilo problem.
[ ljuba @ 06.11.2007. 13:27 ] @
Konacno sam nahvatao Linux/Perl/... administratora u firmi i ubi covek skript za 10 minuta :|

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

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

Code:

<?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");

?>
[ makidip @ 26.03.2009. 19:11 ] @
Molim vas, ako neko moze da mi resi sledece zadatke:

1. Sastavite regularni izraz koji opisuje sve oblike jednine naziva za tri narečja nekadašnjeg srpskohrvatskog jezika.
2. Sastavite regularni izraz koji opisuje sve oblike prisvojnih prideva na –ski, -čki, -ški nominativa i akuzativa jednine i množine.
3. Sastavite regularni izraz koji izdvaja sve oblike lične zamenice za treće lice jednine (muški, ženski i srednji rod).
4. Sastavite regularni izraz koji izdvaja sve reči koje sadrže prefiks „kultur“.
5. Sastavite regularni izraz koji izdvaja sve sve oblike broja "jedan" i njegove slozenice.

Hvala vam unapred.
[ Man-Wolf @ 26.03.2009. 19:17 ] @
Pazi, prvo, najverovatnije niko nece hteti da ti radi zadatke, ako prethodno nisi sam pokusao.

Drugo, jel treba ovo da sastavljas u PHP-u, ili je bitno samo da formiras regularne izraze ?

Trece, ostavi nam bar objasnjenja zadataka. Konkretno - "sve oblike jednine naziva za tri narečja nekadašnjeg srpskohrvatskog jezika." - ja iskreno pojma nemam kako izgledaju oblici jednine za sva tri narecja .... Znaci objasni kako to izgleda .... :-)

Pozdrav

EDIT:

4. Sastavite regularni izraz koji izdvaja sve reči koje sadrže prefiks „kultur“.

Code:

"kultur*" 

[ makidip @ 26.03.2009. 19:50 ] @
Potrebno je samo da se formira regularni izraz. Narecja su: cakavsko, kajkavsko i stokavsko. Oblici licne zamenice za trece lice jednine su: on, ona, ono...
[ Man-Wolf @ 26.03.2009. 20:08 ] @
Pa da bi samo to uradili, treba samo da znamo kako izgleda neka rec na stokavskom, kajkavskom i cakavskom narecju.

2. Sastavite regularni izraz koji opisuje sve oblike prisvojnih prideva na –ski, -čki, -ški nominativa i akuzativa jednine i množine.
Code:

// Ovo bi trebalo da radi za ski, cki, ski. Sto se tice nominativa i akuzativa jednine i mnozine, zaista ne znam kako to izgleda.

"[\w]+[sčš]ki"

[ Man-Wolf @ 26.03.2009. 20:16 ] @
Code:

$text = "Marko je udario pericu po mički, a onda su on i njegov drugar bliski otišli da on viški.";
    
preg_match_all("/[\w]+[sšč]ki/", $text, $matches);
    
print_r($matches);

// Izlaz:

Array
(
    [0] => Array
        (
            [0] => mički
            [1] => bliski
            [2] => viški
        )

)


EDIT: Izvinjavam se zbog vulgarnosti, ali ovo mi je prvo palo na pamet kad sam hteo da isprobam da l' radi ok, a u zurbi sam tako da nisam bas mogao mnogo da razmisljam :-D

Edit by Daki Pro: Zamaskirane vulgarnosti

[Ovu poruku je menjao dakipro dana 27.03.2009. u 08:27 GMT+1]
[ Vladica Savić @ 27.03.2009. 00:08 ] @
Malkice mozda offtopic, jos jedan program koji mnogo moze da vam olaksa rad za kreiranje 'regularnih izraza' je i Expresso
[ Bojana Kukulj @ 16.02.2010. 16:41 ] @
evo posle godinu dana ista tema
:)
naime, mucim se s ovim regularnim izrazom (za ispit, ne sto sam radoznala:)
treba da sastavim regularni izraz koji sadrzi sve oblike zamenica treceg lica
dakle, on, ona, ono, oni, one
i sad se mucim
stavila sam


on*[a,o,i,e]

medjutim, ne izlazi mi on
ne znam koji znak da stavim da bih rekla da zelim i on da mi prepozna, dakle ne samo da sadrzi on vec i da ga prepozna kad je samo

unapred hvala
i ako neko zna gde mogu vise da saznam o tim oznakama, nek baci link
hvalaaaa
[ Man-Wolf @ 16.02.2010. 16:52 ] @
Mislim da bi ovo trebalo da radi:

Code:

on[aoie]?


http://www.regular-expressions.info/
[ Bojana Kukulj @ 16.02.2010. 17:12 ] @
bravo!!
radi
divno! hvala ti
sad cu se malo pozabaviti tim znacima :)
[ Bojana Kukulj @ 16.02.2010. 18:30 ] @
ne mogu da pronadjem na tom sajtu (ili nisam povezala da je o tome rec)
kad na primer hocu da nadjem neku rec i prvu koja joj sledi
npr. jezik i sledecu rec
znas li koja je naredba da mi ukljuci i sledecu rec?
kapiram da trazim jezik i njegove oblike
jezik[a-w]*
al ne znam dalje


tesko bre ovo :)
[ beep @ 16.02.2010. 18:39 ] @
Code:
jezik\s\w+


ako ti je sledeca rec u sledecem redu onda

Code:
/jezik.*?\w+/s
[ Bojana Kukulj @ 16.02.2010. 18:57 ] @
joj hvala
super ste!