• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fehler bei Anzeige von Datenbankinhalt

Status
Für weitere Antworten geschlossen.

Icy

Neues Mitglied
Nabend,

habe mal wieder ein bzw. diesmal zwei Probleme mit meiner Page ^^
Es geht um folgendes Beispiel: klick

Dort klappt alles super, bis auf der Code im dafür vorgesehenen Kasten. Zum einen wird das "<?php" am Anfang nie angezeigt, obwohl es in der Datenbank so existiert. Zum zweiten werden leider überhaupt keine Leerzeichen übernommen, obwohl diese auch in der Datenbank existieren. Die sind bei PHP-Code zum Einrücken natürlich sehr wichtig.
Hier mal die entsprechenden Auszüge aus meinem Code:

PHP:
<?php
// $content ist gefüllt mit dem Datenbankinhalt

$content = str_replace('[CODE]', '<br /><div class=code>', $content);
$content = str_replace('[/CODE]', '</div>', $content);

// Hier ersetze ich die Code Tags durch die entsprechenden HTML-Tags, um den Kasten zu erzeugen

// ... viel Code ...

echo     "<td colspan=\"2\">".$content."</td>";

?>

Ich hoffe ihr könnt mir helfen :)

MfG Icy
 
Hast Du dir die nhalte mal ohne jegliche Modifikation in einem <pre> Element ausgegeben?
Wenn die Leerzeichen da auch nicht sind, könntest Du mal im phpMyAdmin gucken, ob die Zeichen eventuell garnicht gespeichert sind und bereits beim Speichern etwas schief läuft.

Übrigens werden mehrere, aufeinanderfolgende Leerzeichen als eins dargestellt.
Code:
H    l  l       o
Wird also zu "H a l l o".

Auch solltest Du bei der Umsetzung von bbCode lieber zu regulären Ausdrücken greifen, um sie damit zu ersetzen. Ansonsten hast du im Code einfach ein geöffnetes oder geschlossenes Element, weil der User Mist gebaut hat.

Dein "<div class=code" ist auch falsch, der Attributwert muss noch in Anführungszeichen.

EDIT: Es liegt an den Leerzeichen, die als eins dargestellt werden. Außerdem wäre highlight_string() gut geeignet, um dem ganzen noch etwas Farbe zu verpassen! ;)
 
und wenn nu jemand schreibt

Code:
[noparse][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][code][/noparse]

dann ist das design deiner page ruiniert ^^

//Edit;

PHP:
<?php

function spaceMask($txt)
{
    return str_replace(" ",
                       "&nbsp;",
                       $text);
}

$content = preg_replace("/\[code\](.*?)\[\/code\]/sie",
                        "'<br /><div class=code>'.spaceMask('\\1').'</div>'",
                        $content);

// hier kannste dann mit $content weiterarbeiten ^^
// z.b. echo $content;

?>
 
Zuletzt bearbeitet von einem Moderator:
Danke erstmal euch beiden.

@znay: Wenn ich das mit <pre> mache, zeigt der merkwürdigerweise nach jedem Satz ein oder zwei Zeilenumbrüche an, obwohl die gar nicht da sind.

@Slibbo: Habe ich jetzt so getestet, aber komischerweise werden dann keine Zeilenumbrüche mehr angezeigt.

MfG Icy

Edit: Habs jetzt mit <pre></pre> drin. Komischerweise wird da jede Leerzeile doppelt angezeigt -.- klick
 
Zuletzt bearbeitet:
Das liegt daran, dass dadurch alle <br /> in einen Umbruch und auch \n in einen Umruch verwandelt werden. Einfach nl2br() raus machen und es passt.
 
Dann werden aber doch beim gesamten restlichen Inhalt, also auch beim Text der außerhalb der Code-Box steht, alle Leerzeilen gelöscht.


MfG Icy
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben