BBC parser
-
Hi,
Ich bin noch recht neu in PHP und habe mithilfe von Google ein wenig PHP Code für eine BBC Parser Klasse bekommen.Code:
<?php function parse($string) { while($old_string != $string) { $old_string = $string; $string = preg_replace_callback('{[(\w+)((=)(.+)|())]((.|\n)*)[/\1]}U', 'bbcode_callback', $string); } $this->release = html_entity_decode($string); } function bbcode_callback($matches) { $tag = trim($matches[1]); $inner_string = $matches[6]; $argument = $matches[4]; switch($tag) { case 'b': case 'i': case 'u': $replacement = "<$tag>$inner_string</$tag>"; break; case 'code': $replacement = '<b>Code:</b><pre style="font-size:12px;width:450px;overflow:auto;">' . $inner_string . '</pre></div>'; break; case 'color': $color = preg_match("[^[0-9a-fA-F]{3,6}$]", $argument) ? '#' . $argument : $argument; $replacement = '<span style="color:' . $color . '">' . $inner_string . '</span>'; break; case 'email': $address = $argument ? $argument : $inner_string; $replacement = '<a href="mailto:' . $address . '">' . $inner_string . '</a>'; break; case 'img': $replacement = '<img src="' . $inner_string . '" />'; break; case 'size': if (is_numeric($argument) && $argument > 5 && $argument < 64) { $replacement = '<span style="font-size:' . $argument . 'px;">' . $inner_string . '</span>'; } break; case 'quote': $replacement = '<b>Quote:</b><hr />' . $inner_string . '<hr />'; break; case 'URL': $url = $argument ? $argument : $inner_string; $replacement = '<a href="' . $url . '" target="_blank">' . $inner_string . '</a>'; break; default: $replacement = '[' . $tag . ']' . $inner_string . '[/' . $tag .']'; break; } return $replacement; } ?>
Ich verstehe es auch bis auf die Zeichenkette am Anfang.
Jedoch muss ja immer ein Tag auf und Tag zu da sein um bbc in html umzuwandeln.
Was ist nun aber wenn ich ein Smilie parsen will? weil das hat ja nur einen tag und nicht zwei.Vielen Dank für eure Hilfe
-
Vorab erstmal: BBC ist die korrekte Abkürzung für Bulletin Board Code, allerdings hat man sich mehr oder weniger auf BBCode geeinigt, da so Verwechslungen ausgeschlossen sind.
Ich dachte über Deinen Titel z.B. an einen News-Ticker für BBC (British Broadcasting Corporation) Nachrichten.
Zu Deiner Frage:
Smileys und andere "Einparametrige" sind sehr einfach mit str_replace() zu ersetzen.
Beispiel:
<?php $string = "Danke! :)"; $string = str_replace(':)','<img src="smile.jpg">',$string); echo $string; ?>
lg Max
-
Hi,
Danke für deine Hilfe.Leider steig ich da jetzt nicht ganze durch.
Als ich möchte eine art Mysql basierender Parser bauen.
D.h. in einer Tabelle stehen die Sachen die ersetzt werden sollen(Smilies aber auch mehr "zeilige" Elemente).
wenn ich die jetzt abrufe komm ich also zu dem Punkt:<?php while($data = mysql_fetch_array($result) { if($data['einzeilig'] == "1") { $string = str_replace(':)','<img src="smile.jpg">',$string); // das ist klar } else { Aber wie soll ich es bei mehrzeiligen machen??? }
Vielene dank nochmal
-
Such mal nach Google: php replace array badwords - das dürfte dir weiterhelfen,
das prinziep beim badwords ersetzen ist letzendlich das gleiche...