Regular expression i htaccess regex, PCRE, POSIX, upotreba Apache .htaccess , mod_rewrite |
![]() |
|
Alati teme | Način prikaza |
![]() |
#1 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Imam regexp koji treba da pronadje u tekstu sve parove [c]nesto[/c] i zameni za <a href=''>nesto</a>:
Pattern izgleda ovako: "\[c\](.+)?\[\/c\]" Kada unesem tekst sa jednim [c][/c] onda je sve ok, cim ih ima vise od 1 on nadje prvi [c] i poslednji [/c] i zameni sve izmedju. znaci za ovaj teksto: Proba [c]jedan[/c] i jos [c]dva[/c] kraj Zameni sve od prvog [c] do zadnjeg [/c] za link, a treba mi po parovima, znaci on zameni ovako: Proba <a href=''>jedan[/c] i jos [c]dva</a> kraj a treba mi: Proba <a href=''>jedan</a> i jos <a href=''>dva</a> kraj. Da li ja nesto ne kapiram dobro kako u stvari funksionise PHP manual: eregi ?
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
#2 |
Boban Karišik
Expert
|
![]() Ne znam za eregi, nikad ga nisam koristio, ali preko preg_replace bi islo ovako:
Kôd:
$string = 'Proba [c]jedan[/c] i jos [c]dva[/c] kraj'; $pattern = '{\[c\](.*?)\[\/c\]}'; $rep = '<a href="">${1}</a>'; echo preg_replace($pattern,$rep,$string);
__________________
Ako već nisi Anđeo, bar budi čovek... |
![]() |
![]() |
![]() |
#3 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() preg* f-je su uz to i brze, tako da generalno uvek preporucujem njihovo koriscenje, tim pre sto podrzavaju posix subset (tj. mozes koristiti istu sintaksu kao i kod ereg* f-ja).
Inace, poenta je staviti (.*?) kao sto je napisao blood. Po defaultu kod regexpa match je "greedy" tj. pokusava da pronadje najveci moguci match. U tvom slucaju pokupi sve izmedju prvog [c] i poslednjeg [/c] (ukljucujuci i ko zna koliko istih unutra). Ovaj '?' u ovom slucaju pak to iskljucuje, tj. onda hvata prvi moguci match i ne trazi dalje. |
![]() |
![]() |
![]() |
#4 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Prvo znam, ali mi je sintaksa bila teze razumljiva, zato sam uvek koristio ereg... ali si mi sada dao kljucnu informaciju - ako mogu da koriste istu sintaksu kao ereg... onda sam resio sve probleme. Hvala.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
#5 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Potpuno isto, jedino sto kod preg* f-ja koristis delimiter (recimo "/") na pocetku i kraju regexp stringa. Primer:
ereg: PHP kôd:
PHP kôd:
|
![]() |
![]() |
![]() |
#6 |
expert
Grand Master
|
![]() ja uglavnom stavljam U modifier posle drugog delimitera, za resenje greedy problema, koji resava problem globalno a ne na nivou jednog item-a. ionako meni skoro nikad ne treba greedy match
http://bg.php.net/manual/en/referenc....modifiers.php |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Kako otkriti kako je neko provalio u sajt | Aleksandar.Ilic | Web Hosting, web serveri i operativni sistemi | 41 | 21. 03. 2008. 22:45 |