Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa regular expression

[es] :: PHP :: PHP za početnike :: Problem sa regular expression

[ Pregleda: 2671 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Problem sa regular expression22.10.2009. u 17:32 - pre 176 meseci
Poštovanje,

imam problem pošto parsujem fajl u želji da smestim metode klase u bazu. Problem je što postoji promenljiva koja se zove $function. Kako da napišem regular expression koji će matchovati reč function, ali ne i $function i ne "function i neće matchovati junction? Molim vas samo proverene varijante, a možete proveriti svoje expressione na stranici http://www.functions-online.com/preg_match.html
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Problem sa regular expression22.10.2009. u 18:04 - pre 176 meseci
Ako se ne varam, ovako ćeš dobiti niz sa imenima svih metoda u nekoj klasi:
Code:
preg_match_all('/function\s([a-z0-9_]+)/i', $text, $matches);
$methods = $matches[1];

E sad ne znam dal' tebi trebaju samo imena, ili možda i cela definicija funckije, parametri, itd.
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression22.10.2009. u 18:14 - pre 176 meseci
Meni nije problem da izdvojim naziv funkcije, problem mi je jedino expression koji neće okidati na $function ili "function, već samo na function, eventualno space ispred te reči.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Problem sa regular expression22.10.2009. u 19:35 - pre 176 meseci
A šta ćeš sa public, protected i private klauzulama ispred "function"? Mislim da bi ovaj pattern trebao da odradi posao:
/(public\s|protected\s|private\s)?function\s([a-zA-Z0-9_]+)\s*\(.*\)\s*\{.*\}/Us
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression22.10.2009. u 20:03 - pre 176 meseci
Ne bih da te naljutim, ali rekoh, sme da stoji space ispred function, a posle static, public i private uvek ide space Tačnije, da budem jasan, space je jedini znak koji sme da se pojavi ispred function. Word boundries ne pomaže, pošto i on znak $ tumači kao delimiter između reči, tako da sam zbunjen skroz. Imam varijantu da napišem '/^[\s|\t][public\s|static\s|protected|public static\s|static public\s]?function/', ali mi se ne dopada previše ta varijanta... Hteo sam nešto kompaktnije, ali dobro, poslužiće i ovo.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Problem sa regular expression22.10.2009. u 20:22 - pre 176 meseci
Citat:
domaci_a_nas: a posle static, public i private uvek ide space

Pa znam, zato sam i stavljao znak "\s" na kraju svake od tih ključnih reči. Ti onda možeš da dodaš još jedan uslov pored ta tri, ovako: public\s|protected\s|private\s|\s.

Sad sam baš testirao ovaj pattern na jednoj klasi, i radi ok.
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.telenor.co.yu.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Problem sa regular expression22.10.2009. u 20:50 - pre 176 meseci
A da koristis ovu funkciju? http://www.php.net/manual/en/function.get-class-methods.php :)
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression22.10.2009. u 20:54 - pre 176 meseci
Nikola Poša, testiraj svoj pattern na subjektu $function, matchovaće i taj, a ja to ne želim. kazil, hvala ti puno za ovu funkciju, ali je upisivanje u bazu samo deo zadatka, moram da parsujem file.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Problem sa regular expression22.10.2009. u 20:54 - pre 176 meseci
ovo bi trebalo da ti matchuje funkcije: /\s+function\s+([a-z_][a-z_0-9]*)\s*\(/i

ali bih ti ja preporucio da koristis ili get_class_methods ili Reflection klase (sa get_declared_classes mozes da uzmes listu svih deklarisanih klasa prilikom izvrsavanja skripte, ako to moze da ti pomogne...)
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression22.10.2009. u 21:01 - pre 176 meseci
Šta ako meni u redu piše samo function, onda \s+function ne matchuje. Ako staviš \s?function onda će matchovati $function. Moram da parsujem file, baš moram na taj način da punim bazu, a sem toga, jako me zanima da naučim taj regular expression u ovom konkretnom slučaju. Znači treba mi da jedino slovo koje dolazi ispred reči function bude isključivo space. Word boundaries ne radi.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Problem sa regular expression22.10.2009. u 21:07 - pre 176 meseci
Pa ne možeš samo po tome da se vodiš, jer onda bi ti možda match-ovao i neki tekst komentara koji unutar sebe ima reč "function", ovako nešto:
Code:
/**
 * Neki tekst komentara i unutar njega rec function. 
 */

A i kako misliš "na subjektu $function"? Ako si mislio na člana klase, probao sam i to, stavo sam promenljivu koja se zove "function", i nju taj pattern nije match-ovao...
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression22.10.2009. u 21:16 - pre 176 meseci
Tvoj pattern neće matchovati ni reč function ni $function nego samo space i function. Ne zalazim u komentare, u parseru sam to podesio.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
91.148.93.*



+13 Profil

icon Re: Problem sa regular expression23.10.2009. u 08:32 - pre 176 meseci
A da das ti nama kod na kome testiras (ili ti klasu, sta god ...) ? Evo ja sam sad probao ovaj Nikolin kod i radi sasvim korektno.
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
93.86.183.*



+8 Profil

icon Re: Problem sa regular expression23.10.2009. u 15:24 - pre 176 meseci
Kod nije bitan, imate ovu stranicu http://www.functions-online.com/preg_match.html, unesite lepo taj njegov pattern, pa onda u subjektu samo reči $function, pa zatim function, ako bude matchovao function a ne $function ja to prihvatam.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Problem sa regular expression

[ Pregleda: 2671 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.