AlphA: Zeilenumbrüche für MySQL Datenbank umwandeln

Moin Leute!

Ich habe folgendes Problem:
Ich gebe in eine Textarea einen Text ein, der als News gepostet werden soll:
z.B.:
---------------------------------------------------------------
Sehr gute Nachrichten:
Der Half-Life MOD Counter-Strike wird weiterhin fortgesetzt.
Seit 1999 ist der MOD jetzt schon erfolgreich in den deutschen Clans praktiziert worden.
Wäre ja auch schade, wenn es nicht mehr weiter ginge...

Bis bald, AlphA
---------------------------------------------------------------
das zwischen den Strichen tippe ich in die textarea ein!
dann wird es in die MySQL Datenbank geschrieben und in MySQL-Front sieht das im Query richtig aus!

Wenn ich aber in einer PHP Seite ausgeben lasse, sieht der Text so aus:

---------------------------------------------------------------
Sehr gute Nachrichten: Der Half-Life MOD Counter-Strike wird weiterhin fortgesetzt. Seit 1999 ist der MOD jetzt schon erfolgreich in den deutschen Clans praktiziert worden. Wäre ja auch schade, wenn es nicht mehr weiter ginge...  Bis bald, AlphA
---------------------------------------------------------------

Wie ihr seht, übernimmt der PHP die Zeilenumbrüche nicht!
ich habe es schon mit dem Befehl
str_replace("%0D","<br>",$news_inhalt);
und allmögliche Varianten!

Ich hoffe ihr habt verstanden, was ich meine und könnt mir helfen

Grüße AlphA

  1. Hallo Alpha,

    Wie ihr seht, übernimmt der PHP die Zeilenumbrüche nicht!

    Falsch. PHP übernimmt die Zeilenumbrüche schon. Dein Browser tut es nicht. ;-)

    ich habe es schon mit dem Befehl
    str_replace("%0D","<br>",$news_inhalt);
    und allmögliche Varianten!

    Also: in PHP kannst Du Sonderzeichen entweder über chr(code) (z.B. chr(10)) _oder_ \oktcode, \xhexcode oder \buchstabe "erreichen". %0D geht nicht.

    Es gibt in PHP allerdings die Funktion nl2br, die genau das macht, was Du willst, daher brauchst Du Dich nicht groß darum kümmern:

    echo nl2br ($text);

    Da wir aber gerade bei Zeilenumbrüchen sind:

    Bei der Eingabe selbst (vor dem in die Datenbank schreiben) solltest Du noch alle Zeilenumbrüche vereinheitlichen:

    $text = preg_replace ("!\015\012|\012|\015!", "\n", $text);

    Das hängt damit zusammen, dass unterschiedliche Betriebsysteme evtl. unterschiedliche Zeilenumbrüche liefern und dieser Aufruf fängt das ganze _vor_ dem Einfügen in die Datenbank ab.

    Viele Grüße,
    Christian

    --
    Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
    1. hi Christian

      $text = preg_replace ("!\015\012|\012|\015!", "\n", $text);

      was bedeutet das, wenn man '!' anstelle von '/' verwendet?

      prost
      seth

      1. Moin,

        $text = preg_replace ("!\015\012|\012|\015!", "\n", $text);
        was bedeutet das, wenn man '!' anstelle von '/' verwendet?

        Nichts besonderes. Es ist bloß oft leichter zu lesen und vor allem wenn Slashes im Regexp auftreten leichter zu tippen. Du kannst natürlich auch (fast) jedes andere Zeichen nehmen.

        | The expression should be enclosed in the delimiters, a forward slash (/),
        | for example. Any character can be used for delimiter as long as it's not
        | alphanumeric or backslash (). If the delimiter character has to be used
        | in the expression itself, it needs to be escaped by backslash. Since PHP
        | 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters.
           -- http://www.php.net/manual/en/ref.pcre.php

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~