[ CONFIQ @ 10.06.2003. 02:40 ] @
I taman kad pomislim „Evo, sada bar nešto malo znam” ispada da nemam pojma :)

Naime, evo jedan najprostiji primer

$msg1 = preg_replace('#\[ u](.+?)\[ /u]#is', '<u>$1</u>', $msg1);
Ovo lepo radi ali ne kad su tagovi spojeni.Odnosno ako se unutar [ u] nalazi još jedan [ u].
Primer:
[ u]Under[ u] line[ /u][ /u]
Printuje ovo:
Under[ u] line[ /u]
A hoću ovako baš kako je na ESu:
Under line.

Meni ovo ne bi smetalo ovoliko ali problem je sa Quote.
Kad neko dva puta citira onda u opšte ne persuje drugi citat nego ga lepo pokaže kao UBBC kôd.
Razmišljao sam da stavim jedan while... naprimer:

while (preg_match('#\[ u](.+?)\[ /u]#is', '<u>$1</u>', $msg1)) {
Ali problem je što imam još mnogo tagova i + će da usporava ako je veliki txt.

Nemam pojma kako da rešim ovo, baš dosta vremena sam proveo da napravim kako treba ali ne ide :(


~Say FiQ
[ alex @ 10.06.2003. 13:13 ] @
Zasto zamenjujes otvoren ([ u]) i zatvoren ([/ u]) tag u isto vreme? Probaj da zamenis sve [ u] tagove u stringu pa onda [ /u] tagove (koristi switch g). Tako neces imati problema sa ugnjezdenim tagovima.

Poz,
alex.
[ CONFIQ @ 10.06.2003. 15:01 ] @
Nisam naveo da koristim razmak između [ tagova] tako da bi bila čitljivija poruka.
Alex:
Čitao sam sve „switcheve” ovde i čitajući skontao sam da PHP automatski stavlja g „Modifikator” (ili kako već da ga nazovem).
A kad stavim g kaže mi:

Warning: Unknown modifier 'g' in /njanja/home.php on line 51


~Say Sad FiQ
[ -zombie- @ 10.06.2003. 16:18 ] @
a da probaš sa U modifierom.. ungreedy
[ alex @ 10.06.2003. 16:48 ] @
Sorry, CONFIG, razmisljao sam u Perl modu.. ;)

Ipak, moj predlog jos uvek stoji, menjaj tagove jedan po jedan (a ne komplete). Takodje, mozes sve tagove da ubacis u array, i onda da sa preg_replace() zamenis sva pojavljivanja svih tagova iz tog niza sa drugim nizom u kome imas svoje vrednosti.
[ leka @ 10.06.2003. 17:13 ] @
Danilo je pre neki dan poslao gotov kod za parsiranje UBB koda... Predlazem da ga pogledas, mozda ti pomogne.
[ tOwk @ 10.06.2003. 17:15 ] @
CONFIQ, a ne odgovara ti onaj parser koji sam stavio u PHP forum?

Odlično podržava ugnježdavanje, ukupno jedan prolaz (pa je brže od svakog mogućeg parsera koji zamenjuje pomoću regexp-a), i lako je proširiv.

dopuna: Evo, Leka je već rekao sve, pa 'ajde da ja dam i direktan link:
http://www.elitesecurity.org/tema/23874
[ CONFIQ @ 10.06.2003. 18:36 ] @
Citat:
alex:
Zasto zamenjujes otvoren ([ u]) i zatvoren ([/ u]) tag u isto vreme? Probaj da zamenis sve [ u] tagove u stringu pa onda [ /u] tagove (koristi switch g). Tako neces imati problema sa ugnjezdenim tagovima.

Poz,
alex.

Uhhh tek sad sam pročitao poruku kako treba.Pa gledam da li su zatvoreni tagovi zato što ne koristim samo za [ u] već ima nekih tagova koji moraju da budu zatvoreni a ako ne bi zatvorio neke upropastilo bi ceo izgled (np. [url])


-zombie-: Vidiš, probao sam i sa Ungreedy ali ne ide.Doduše malo je drugačije ali isto ne persira ugnječene tagove :(

Danilo: Što se tiče tvog kôd-a poslaću poruku na datom forumu

Conclusion: Izgleda da se UBBCôd ne može napisati bez ijedne petlje.Jako mrzim kad se petljam sa petljama ali moraću bar jedan while(preg_match za ovu glupost. Nadam se da neće da uspori celu PHP skriptu.

Hvala svima na odgovorima!

~Say FiQ