Witam,
przy oprogramowywaniu BBCodu pojawił mi się niezbyt ciekawy problem... Przy niektórych tagach konieczne jest aby wszelkie tagi w nim nie były przetwarzane, przykładem takiego tagu może być chociażby [code]. Myślałem nad tym aby po prostu wywołać funkcję preg_replace_callback co dopasuje wszystkie takie tagi i pozamienia w ich zawartości wszelkie [ i ] na ich HTML-owe odpowiedniki &~;
No tylko problem jest jak to dopasować...
<code>#\(.*?)\#i</code>
Dopasuje mi pierwsze rozpoczęcie tagu [ b] i pierwsze pojawiające się zamknięcie, więc jeżeli zagnieździmy tagi w ten sposób: [ b]asd[ b]asd[ /b]asd[ /b] to to wszystko szlag trafi
Drugie co wymyśliłem to:
<code>#\(.*)\#i</code>
Ale w końcu wyszło, że jeżeli kod wygląda tak: [ b]asd[ /b] asd [ b] asd [ /b] to zamieni 1sze i ostatnie wystąpienie, czyli uzyskam coś w stylu < b>asd [ /b] asd [ b ] asd < /b>
Już dobre parę godzin nad tym siedzę i oprócz wyrażeń regularnych próbuję coś wymyśleć z funkcjami do obsługi tekstu z serii ~str~ ale nic mi nie wychodzi. Jak to można rozwiązać? W wyrażeniach regularnych to ja jestem ciemny i żadne manuale mnie nie zbawiły.
Z góry dziękuję za pomoc