ZoRaC Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 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... Lenke til kommentar
Gjest Slettet+142 Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 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
ZoRaC Skrevet 13. oktober 2007 Forfatter Del Skrevet 13. oktober 2007 Dette ser ut til å fungere: $text = preg_replace('/\\[.*\\](.*)\\[\\/.*\\]/Usi', '\\1', $text); $text = preg_replace('/\\[.*\\]/Usi', '\\1', $text); Lenke til kommentar
Gjest Slettet+142 Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 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 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
MartinGoesWild Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 <?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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå