Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szybki sposób na BBCode
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Napisałem do swojego cmsu na szybko wtyczkę która w formie jsona trzyma do każdego tagu BB 2 regexy (z => do) oraz informację czy tagu może używać zwykły użytkownik (np. w komentarzach).
Kod odpowiedzialny za aplikowanie BB jest bardzo prosty:
  1. private function parseBB($txt, $onlySafeTags=true) {
  2. foreach($this->sets as $preg) {
  3. if($onlySafeTags == true && $preg[2] != "1") continue; //Only safe tags mode turned on but processed tag is not safe, skip it
  4.  
  5. $out = @preg_replace($preg[0], $preg[1], $txt);
  6. if($out==false) trigger_error("BBCoder: tag ==> ".$preg[0]." <== is broken", E_USER_WARNING); else $txt = $out; //Do not destory text on error
  7. }
  8.  
  9. return $txt;
  10. }


Życie nauczyło mnie, że im prostrzy dla człowieka kod tym dłużej się wykonuje - nie inaczej jest tutaj. Przy 2-3 tagach nie ma problemu, jadnak jeśli dodam ich 20 to czas generowania przestaje być satysfakcjonujący. Prasowanie 1 tagu zajmuje średnio 0.8-1ms przy C2D - to wartość dla mnie nieakceptowalna.
Co prawda aplikowanie działa tak, że podstrona jest generowana > aplikowane są filtry (jednym z nich jest właśnie wtyczka BBCoder) > podstrona jest cachowana jako wynikowy HTML jednakże nie podoba mi się sytuacja gdy głupie BBCode dubluje czas generowania.

Czy ktoś ma pomysł jak to rozwiązanie uwydajnić? Mógłbym bawić się w str_replace ale wtedy odpadają tagi z parametrami (np. [yt width=100 height=100][/yt]) oraz powstaje problem niedomkniętych tagów.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mlawnik
post
Post #2





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

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


https://github.com/wookieb/bbcode

To na pewno ci pomoże.
Dobre, sprawne i szybko działa,
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(mlawnik @ 15.05.2011, 18:23:46 ) *
https://github.com/wookieb/bbcode

To na pewno ci pomoże.
Dobre, sprawne i szybko działa,


Znam tę klasę, jednakże to chyba przerost formy nad treścia w moim przypadku (IMG:style_emoticons/default/wink.gif)
Dodatkowo musze jakoś sprytnie dać adminowi możliwość edycji tagów z poziomu panelu admina.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 17:15