SQL-Daten != $_POST

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).
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;
}
 
Hast du dir den Beitrag mal ohne formattext() ausgeben lassen um zu sehen, ob MySQL vielleicht irgendeine Form von Maskierungszeichen eingefügt hat?
Zum Beispiel magic_quotes, Slashes o. ä.
 
Zurück