Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne a BB Code
Snowak
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Snowak
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


Już dawno go napisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A ten kod w tym temacie nie rozwiązuje problemu... Ma za mało możliwości i napisany jest w dość lamerski sposób. U mnie to działa jak prawdziwy parser HTML czyli dodatkowo odczytuje wszystkie parametry, tj.
[ABC a=1 b='2' ten tekst nie zostanie przetworzony c="3"]asd[/ABC]
Wszystkie tagi są zamykane w odpowiednim miejscu tak że powstaje kod zgodny ze wszelkimi standardami XHTMLa, można wybrać czy wewnątrz danego tagu parsować następne tagi i emotki. A wszystkie tagi zamiast być opisane przez wyrażenia regularne, są opisane przez kod PHP który można dynamicznie edytować przy każdym tagu w panelu admina co daje praktycznie nieskończone możliwości (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A na dodatek szybko działa.. ;o Kod zajął prawie 700 linijek (wraz z zaawansowanym systemem skalowania obrazków, jeżeli zachodzi taka konieczność), lol. Ale co ja poradzę.. projekt komercyjny ;s

Ten post edytował Snowak 16.12.2007, 13:21:31
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:18