bastian: eigendlich auch PHP -String mit Zeilenumbrüchen-

Hallo

kurz:
ich lese aus eine Datenbank ein Feld aus, ich bekomme einen String der Zeilenumbrücke (\r\n oder \n oder \r) enthält. Diesen String habe ich in einer PHP Variable.  nun möchte ich den String so ausgeben, dass er in einer JavaScript Variable steht und die Zeilenumbruch Informatioen auch nicht verliert.

so sieht der JavaScript String aus:
 var eingaben = "<textarea rows='10' name='newName1'  cols='40'>~inhalt2~</textarea>";

Wenn ich das mache:
$vars["~inhalt2~"] =$beitrag[$i]["Beitrag"];
Sieht der JString so aus:
 var eingaben = "<textarea rows='10' name='newName1'  cols='40'>Hier mein Text
mit allem
Umrüchen</textarea>"; <-- Syntaxfehler

folgenden würde funktionieren, ich verliehre aber die Zeilenumbrüche:
$vars["~inhalt2~"] = ereg_replace("(\r\n|\n|\r)", "", $beitrag[$i]["Beitrag"]);
Der JString so so aus:
 var eingaben = "<textarea rows='10' name='newName1'  cols='40'>Hier mein Text mit allem Umrüchen</textarea>";

..
~inhalt2~ wird mit einen Parser durch den Inhalt von $vars[~inhalt2~] ersetzt. Das funktioniert auch alles ;)

Vielen Dank an jeden der sich die Zeit genommen hat das zu lesen und ich währe Über Ideen Dankbar.

Gruß
Bastian

  1. Hallo bastian,

    da javascript und php die gleichen zeichen für zeilenumbrüche benutzen, musst du diese zeichen nochmals maskieren, damit php sie als normalen text interpretiert. schau mal nach "addslashes".
    freundl. Grüße aus Berlin, Raik

    1. hi,

      da javascript und php die gleichen zeichen für zeilenumbrüche benutzen, musst du diese zeichen nochmals maskieren, damit php sie als normalen text interpretiert.

      bis hier hast du recht.

      schau mal nach "addslashes".

      ob das etwas hilft, würde ich aber bezweifeln.

      beschreibung laut manual:

      "Gibt einen String (Zeichenkette) zurück, in dem bestimmten Zeichen ein Backslash "" voran gestellt wurde. Diese Funktion ist z.B. für Datenbankabfragen wichtig. Die behandelten Zeichen sind der einfache und der doppelte Anführungsstrich (' und "), der Rückstrich () selbst sowie NUL (das Null-Byte)."

      diese funktion versieht zwar einen backslash \ mit einem zweiten - aber nicht wenn im string \n "drin steht". das sind nämlich für php keine _zwei_ zeichen, also ein blackslash und ein n, so dass addslashes hier aus dem \n \n machen würde - sondern das ist für php _genau ein_ (steuer-)zeichen.

      php wird darin ganz bestimmt _keinen_ backslash erkennen, der zu maskieren wäre.

      bastian wird also bei seinem ereg_replace bleiben müssen (bzw. vllt. auch einfacher str_replace), um gezielt \n durch \n zu ersetzen vor der ausgabe. (dabei natürlich beim schreiben der suchmuster die korrekte maskierung beachten.)

      gruss,
      wahsaga

      1. gruss,
        wahsaga

        gruß zurück,
        das war genau was ich suchte, danke nochmals :)!