Regular expression i htaccess regex, PCRE, POSIX, upotreba Apache .htaccess , mod_rewrite |
|
Alati teme | Način prikaza |
|
10. 09. 2007. | #1 |
Goran Pilipović
Sir Write-a-Lot
|
Kako se matchuju parovi?
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! |
10. 09. 2007. | #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... |
10. 09. 2007. | #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. |
10. 09. 2007. | #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! |
10. 09. 2007. | #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:
|
10. 09. 2007. | #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 |
|
|
Slične teme | ||||
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 |