Infernus
Mitglied
Hallo,
Ich habe ein kleines ACP geschrieben, dass mit BBCodes arbeitet.
Jetzt habe ich in das Eingabe-Feld (mit ner kleinen AJAX-Spielerei) eine Vorschau gemacht (läuft über den _POST-Wert).
Auf der Internetseite selbst lade ich dann die Ausgabe aus der SQL-Datenbank (mysql_fetch_assoc). Auch hier geb' ich das ganze wieder so aus:
Theoretisch sollten beide Werte (und somit auch die Ausgaben) ja gleich sein. Jedoch zeigt er beispielsweise die Vorschau richtig an, auf der Hompage wandelt er dann aber einen befehl ([cell]) nicht um, was dann das ganze layout zerstört...
Falls ich den Fehler bei der formattext haben sollte poste ich die auch einfach mal rein (mit BBCode-Interpeter)
Ich habe ein kleines ACP geschrieben, dass mit BBCodes arbeitet.
Jetzt habe ich in das Eingabe-Feld (mit ner kleinen AJAX-Spielerei) eine Vorschau gemacht (läuft über den _POST-Wert).
PHP:
formattext($_POST['inhalt'])
Auf der Internetseite selbst lade ich dann die Ausgabe aus der SQL-Datenbank (mysql_fetch_assoc). Auch hier geb' ich das ganze wieder so aus:
PHP:
formattext($row['inhalt'])
Theoretisch sollten beide Werte (und somit auch die Ausgaben) ja gleich sein. Jedoch zeigt er beispielsweise die Vorschau richtig an, auf der Hompage wandelt er dann aber einen befehl ([cell]) nicht um, was dann das ganze layout zerstört...
Falls ich den Fehler bei der formattext haben sollte poste ich die auch einfach mal rein (mit BBCode-Interpeter)
PHP:
function formattext($string)
{
$string=nl2br(BBCode(htmlspecialchars($string)));
//gegen <br> in tabellen BEGIN
$string=str_replace('<table class="article"><br />','<table class="article">',$string);
$string=str_replace('<table class="article" align="center"><br />','<table class="article" align="center">',$string);
$string=str_replace('<tr><br />',"<tr>",$string);
$string=str_replace('</td><br />',"</td>",$string);
$string=str_replace('</tr><br />',"</tr>",$string);
//gegen tabellen ENDE
return $string;
}
function BBCode($string)
{
$search = array('#\[ url]([a-z]+?://){1}(.*?)\[ /url]#i',
'#\[ url](.*?)\[ /url\]#i',
'#\[ url=([a-z]+?://){1}(.*?)\](.*?)\[ /url]#i',
'#\[ b](.*?)\[ /b\]#is',
'#\[ i](.*?)\[ /i\]#is',
'#\[ u](.*?)\[ /u\]#is',
'#\[ size=([\-\+]{1}[0-9]+)](.*?)\[ /size\]#is',
'#\[ block](.*?)\[ /block\]#is',
'#\[ img]([a-z]+?://){1}(.*?)\[ /img]#i',
'#\[ img](.*?)\[ /img\]#i',
'#\[ table](.*?)\[ /table\]#is',
'#\[ table center](.*?)\[ /table\]#is',
'#\[ line](.*?)\[ /line\]#is',
'#\[ cell](.*?)\[ /cell\]#is',
'#\[ center](.*?)\[ /center\]#is',
'#\[ quote](.*)\[ /quote\]#is',
'#\[ quote=([A-Za-z0-9\ö\ä\ü\!\"\§\$\%\&\/\(\)\=\?\\\*\'\#\+\-\<\>]+)](.*)\[ /quote\]#is',
'#\[ color=([a-z]+)](.*?)\[ /color\]#is',
'#\[ color=([0-9a-fA-F]{3,6})](.*?)\[ /color\]#is',
'#([ -_\.]?[A-Za-z0-9]+)@([-_\.]?[A-Za-z0-9]+)\.([A-Za-z]{2,4})#i',
'#\s([ a-z]+?://){1}([w2s]{3,5}\.){1}([a-zA-Z0-9\-\_]+)\.([a-zA-Z0-9\-\/\_]+)#i',
'#\s([ a-z]+?://){1}([a-zA-Z0-9\-\_]+\.){1}([a-zA-Z0-9\-\/\_]+)#i',
'#\s([ w2s]{3,5}\.){1}([a-zA-Z0-9\-\_]+\.){1}([a-zA-Z0-9\-\/\_]+)#i',
) ;
$replace = array('<a href="\1\2">$1$2</a>',
'<a href="\1\2">\1</a>',
'<a href="\1\2">\3</a>',
'<b>\1</b>',
'<i>\1</i>',
'<u>\1</u>',
'<font size="\1">\2</font>',
'<div align="justify">\1</div>',
'<img src="\1\2">',
'<img src="\1\2">',
'<table class="article">\1</table>',
'<table class="article" align="center">\1</table>',
'<tr>\1</tr>',
'<td class="article">\1</td>',
'<center>\1</center>',
'<table class="quotation"><tr><td>\1</td></tr></table>',
'<table class="quotation"><tr><td><i>Zitat von \1:</i><br>\2</td></tr></table>',
'<font style="color: \1">\2</font>',
'<font style="color: \1">\2</font>',
'<a href="mailto:\1@\2.\3">\1@\2.\3</a>',
'<a href="\1\2\3.\4">\1\2\3.\4</a>',
'<a href="\1\2.\3">\1\2\3</a>',
'<a href="http://\1\2\3">\1\2\3</a>',
) ;
$string = preg_replace($search, $replace, $string);
return $string;
}