Gå til innhold

Fjerne all BBcode


Anbefalte innlegg

Skal hente innlegg fra phpBB og vise de første 250 tegnene fra innlegget - dessverre har noen av innleggene BBcode og da blir det med slikt som

i utskriften... noen som vet hvordan jeg kan fjerne all BBcode?

 

I "verste fall" kan jeg fjerne alt mellom [ og ], men er ikke helt stødig på regex... :p

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Du kan prøve å finne bbcode-funksjonen og deretter enten:

- kopiere den, endre navn til f.eks strip_bbcode($...), endre funksjonen til å fjerne all bbcode istedenfor å omforme bbkode til htmlkode

- kopiere den hertil, kanskje noen her kan fikse på den

Lenke til kommentar
Gjest Slettet+142

Men den der vil jo fjerne det som også ikke er bbkode?

 

Hva om jeg hadde skrevet på forumet:

[
DETTE ER EN TUTORIAL
[
 Tøft eller?
]
 Ok..
]

 

Vekk er det med det da, tror jeg :hm:

 

Men det er jo alltids en løsning, selv om jeg tror jeg selv ikke hadde gått får en slik en.

Lenke til kommentar

<?php

/*
BBcode to HTML.
Author: Masticore ([email protected])

The preg_match_all() thing is to fix this problem:
[b]asdf[b]asdf[/b][/b] => <b>asdf[b]asdf</b>[/b]
and...
[b]asdf[b]asdf[/b][/b] => <b>asdf[b]asdf[/b]</b>

Here it goes like this:
[b]asdf[b]asdf[/b][/b] => <b>asdf<b>asdf</b></b>
*/

class BBCodeClass {

   private $pattern  =  array(
                        0  =>  '/\[b\](.*?)\[\/b\]/mis',
                        1  =>  '/\[i\](.*?)\[\/i\]/mis',
                        2  =>  '/\[u\](.*?)\[\/u\]/mis',
                        3  =>  '/\[quote\](.*?)\[\/quote\]/mis',
                        4  =>  '/\[color=(.*?)\](.*)\[\/color\]/mis',
                        5  =>  '/\[left\](.*?)\[\/left\]/mis',
                        6  =>  '/\[center\](.*?)\[\/center\]/mis',
                        7  =>  '/\[right\](.*?)\[\/right\]/mis',
                        8  =>  '/\[size=(\d{1,2})\](.*)\[\/size\]/mis',
                        9  =>  '/\[url=((https?|ftp|irc):\/\/(www\d?)?.{3,}?)\](.*?)\[\/url\]/mis',
                       10  =>  '/\[img]((https?|ftp)\:\/\/(www\d?)?.{3,}?)\[\/img\]/mis' );

   private $tag    =    array(
                        0  =>  '/\[b\]/i',
                        1  =>  '/\[i\]/i',
                        2  =>  '/\[u\]/i',
                        3  =>  '/\[quote\]/i',
                        4  =>  '/\[color=(.*)\]/i',
                        5  =>  '/\[left\]/i',
                        6  =>  '/\[center\]/i',
                        7  =>  '/\[right\]/i',
                        8  =>  '/\[size=(\d{1,2})\]/i',
                        9  =>  '/\[url=((https?|ftp|irc):\/\/(www\d?)?.{3,}?)\]/i',
                       10  =>  '/\[img\]/i' );

   private $replace  =  array(
                        0  =>  '<span style="font-weight:bold;">$1</span>',
                        1  =>  '<span style="font-style:italic;">$1</span>',
                        2  =>  '<span style="text-decoration:underline;">$1</span>',
                        3  =>  '<blockquote><fieldset><legend>Quote</legend>$1</fieldset></blockquote>',
                        4  =>  '<span style="color: $1;">$2</span>',
                        5  =>  '<div align="left">$1</div>',
                        6  =>  '<div align="center">$1</div>',
                        7  =>  '<div align="right">$1</div>',
                        8  =>  '<span style="font-size:$1px">$2</span>',
                        9  =>  '<a href="$1" target="_blank">$4</a>',
                       10  =>  '<a href="$1" target="_blank"><img src="$1" border="0" alt="" /></a>' );


   //Highlight code
   private function highlightCode($string) {
       preg_match_all('/\[code\]/mis', $string, $m);
       for ($i = 0; $i < count($m[0]); $i++) { 
           $string = preg_replace_callback('/\[code\](.*?)\[\/code\]/mis', create_function('$matches', 'return \'<div style="background-color:#EEEEEE; margin:0px; border:1px inset; overflow:auto;">\'.highlight_string(trim($matches[1]), true).\'</div>\'; '), $string);
       }
       return $string;
   }

   //Replaces BBcodes with HTML
   public function bbcode($string) {
       foreach ($this->pattern as $key => $value) {
           preg_match_all($this->tag[$key], $string, $m);
           for ($i = 0; $i < count($m[0]); $i++)  {
               $string = preg_replace($this->pattern[$key], $this->replace[$key], $string);
           }     
       }
       $string = $this->highlightCode($string);
       return nl2br($string);
   }

}


?>

 

 

En slik du tenker på?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...