DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > Regular expression i htaccess
Beach Wedding Dresses - Looking for the Wedding Dress? Here, 1dress.co.uk stunning collection of beach wedding dresses is just what you are looking for.

Regular expression i htaccess regex, PCRE, POSIX, upotreba Apache .htaccess , mod_rewrite

Odgovori
 
Alati teme Način prikaza
Staro 12. 03. 2006.   #1
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
178 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default Text file regexp validator

Imam neki txt file koji izgleda ovako od prilike:

5.000.000
26.000.000
0.00062
5.000.001
72.000.000
0.00059
...

e sada, taj file treba proveriti da ne sadrzi nista drugo osim onoga sto bi trebalo sadrzati...

Ja sam napisao ovo, ali ne radi.
Evo mog koda:


Kôd:
function validateFile($filename) {
	$file 	         = file($filename);
	$rows	       = count($filename);
	$line	        = 0;
	while($line < $rows) {
		if(preg_match("/\d{1}.\d{3}.\d{3}/",$file[$line])) {
			$errorMsg		.= "Error at line".$line+1."!";
		}
		if(preg_match("/\d{2}.\d{3}.\d{3}/",$file[$line+1])) {
			$errorMsg		.= "Error at line".$line+2."!";
		}
		if(preg_match("/\d{1}.\d{6}/",$file[$line+2])) {
			$errorMsg		.= "Error at line".$line+3."!";
		}
		$line += 3;
	}
	return $errorMsg;
}
kao sto vidite, prva tri reda se sekvencijalno ponavljaju.

Pozdrav i hvala!
Blood je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #2
BraMom
Branimir Momcilovic
Qualified
 
Datum učlanjenja: 15.02.2006
Lokacija: Beograd
Poruke: 167
Hvala: 47
25 "Hvala" u 8 poruka
BraMom is on a distinguished road
Default

1) $rows = count($filename); ?
trebalo bi da stoji $rows = count($file)

2) "Error at line".$line+1."!"
ovo mozda i radi u nekim verzijama PHP-a, ali nemoj tako da pises, imas string pa konkatenaciju sa integer pa sabiranje integer-a pa opet konkatenaciju...
probaj bar nesto ovako: "Error at line". (string)($line+1) . "!"

3) Koliko mi se cini preg_match vraca 1, tj. true kada string zadovoljava regularni izraz koji si poslao, znaci nedostaje ti jedno not u ovim ifovima

A pre svega bih predlozio da ovaj fajl struktuiras malo, mozda bi bilo bolje da ima strukturu, npr:
5.000.000;26.000.000;0.00062
5.000.001;72.000.000;0.00059
tako bi izbegao ovaj udarac $line += 3; od kog se jezim...
BraMom je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #3
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
1.940 "Hvala" u 579 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao BraMom
ovo mozda i radi u nekim verzijama PHP-a, ali nemoj tako da pises, imas string pa konkatenaciju sa integer pa sabiranje integer-a pa opet konkatenaciju...
probaj bar nesto ovako: "Error at line". (string)($line+1) . "!"
nema potrebe za castingom u string, operator za konkatenaciju ce to da odradi automatski u svim verzijama php, AFAIK... ali zagrade su potrebne jer + i . imaju isti prioritet...

I uzgred koristite uvek ' ' za stringove koji ne treba da se interpoliraju, upotreba "" na cistom textu je obicno trosenje resursa...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #4
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
178 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default

OK, hvala, ispravio sam sve sto ste mi rekli i to sada radi...

Imam jos jedno pitanje, da nema neko neku literaturu o regularnim izrazima, jer je na www.php.net ako skrto objasnjeno!
Blood je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #5
zextra
Boris
Grand Master
 
Avatar zextra
 
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
154 "Hvala" u 2 poruka
zextra is on a distinguished roadzextra is on a distinguished road
Default

Literature ima koliko hoces...

http://aspn.activestate.com/ASPN/doc...od/perlre.html

Inace, trazis dokumentaciju za PERL Regular Expressions (skraceno "perlre").
Preporucio bih ti simpa programcic za pisanje/testiranje regularnih izraza: The Regex Coach
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams
zextra je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #6
BraMom
Branimir Momcilovic
Qualified
 
Datum učlanjenja: 15.02.2006
Lokacija: Beograd
Poruke: 167
Hvala: 47
25 "Hvala" u 8 poruka
BraMom is on a distinguished road
Default

@ivanhoe
Ma radice u PHP-u i 5 + 'mica'. tj. nece javljati error, ali hteo sam da napomenem da takav stil kodiranja moze da dovode do gresaka, kao sto je i bio slucaj.
BraMom je offline   Odgovorite uz citat
Staro 12. 03. 2006.   #7
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
178 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default

Citat:
Originalno napisao zextra
Literature ima koliko hoces...

http://aspn.activestate.com/ASPN/doc...od/perlre.html

Inace, trazis dokumentaciju za PERL Regular Expressions (skraceno "perlre").
Preporucio bih ti simpa programcic za pisanje/testiranje regularnih izraza: The Regex Coach
Hvala, program vec imam i dosta mi je pomogao, ali dzaba program kad ne znam sta sve mogu da iskoristim

tnx again
Blood je offline   Odgovorite uz citat
Staro 13. 03. 2006.   #8
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
1.940 "Hvala" u 579 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

sad sam tek pogledao regExpe koje si napisao, imas gresku sto je tacka specijalan znak u RE, znaci "bilo koji karakter", ako zelis bas karakter . onda moras da je escapeujes.

Znaci ako zelis da uhvatis 5.000.000 treba da pises /\d\.\d{3}\.\d{3}/ (znaci 2 stvari se razlikuju: ne treba ti {1} to se podrazumeva kad nista ne napises, i tacke moraju da budu escapeovane...). Ovaj regexp ce da prihvati samo zadati format, dok bi tvoja verzija recimo pristala i na 5A000#000 (odnosno bilo koji drugi karakter na mestu tacke)
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 13. 03. 2006.   #9
zextra
Boris
Grand Master
 
Avatar zextra
 
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
154 "Hvala" u 2 poruka
zextra is on a distinguished roadzextra is on a distinguished road
Default

Zapravo, taj regexp (i ne samo taj, vec sva tri, u obliku u kom se nalaze) bi prihvatio recimo i 0000000000000000000000000 bez vecih problema Gledaj da stavljas ^ i $ na pocetak i kraj regexp-a, da bi proveravao izraz od pocetka do kraja reda, a ne samo neki proizvoljni deo gde se zatekne to sto tebi treba.
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams
zextra je offline   Odgovorite uz citat
Staro 13. 03. 2006.   #10
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
1.940 "Hvala" u 579 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

^ skroz tacno, moj previd...znaci /^\d\.\d{3}\.\d{3}$/
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Regexp: Upomoć! Dušan Dželebdžić Regular expression i htaccess 10 20. 08. 2007. 02:29
W3C redizajnirali validator Dragan Babić Opušteno 1 25. 07. 2007. 23:00
Odlican validator service ivanhoe Web aplikacije, web servisi i software 7 09. 01. 2007. 13:44
W3C Validator - ko je ovde lud? ivanhoe (X)HTML, JavaScript, DHTML, XML, CSS 9 13. 09. 2006. 22:16
Regexp i naša slova Dragan Babić Regular expression i htaccess 7 06. 09. 2006. 17:37


Vreme je GMT +2. Trenutno vreme je 15:41.


Blogodak - Domaci blogovi na jednom mestu Caught in a web - web dev blog
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.