Melli: "\"-Zeichen Herausfiltern

Hallo,

ich hab ein Problem. Ich speichere mit PHP einen Text in eine .txt-datei.

Folgender Text
hdfgdh "hjjg" kdskh'kjkkj 'jkj'

wird zu
hdfgdh "hjjg" kdskh'kjkkj 'jkj'

Ist dafür vieleicht das verantwortlich?
$story_text = preg_replace('/\r\n|\r|\n/', '<br>', $story_text);

Eigentlich will ich damit nur die Zeilenumbrüche in <br>umwandeln.

Wie kann ich die ""-Zeichen verhindern?

mfg Melli

  1. Moin Melli,

    Ist dafür vieleicht das verantwortlich?
    $story_text = preg_replace('/\r\n|\r|\n/', '<br>', $story_text);

    Du maskierst den \ er wird dann nicht mehr erkannt.

    Mache es so:

    $story_text = preg_replace('\r\n|\r|\n','

    Wobei ich nir nicht sicher bin ob das Pipe so funtzt.

    Ansonsten:

    $text = str_replace('\r\n','<br>',$text);

    regds
    Mike

    1. Hallo,

      das hat irgendwie nicht mein Problem gelöst, der Text wird immer noch mit \ vor den ' und " gespeochert.

      mfg melli

      1. Moin Melli,

        kannst du bitte mal deinen "neuen" Code posten.

        regds
        Mike

        1. Hi Mike,

          $story_text wird aus einer Textarea übergeben

          //hier sollen die Zeilenumbrüche herausgefiltert wetden und durch <br> ersetzt werden
          $story_text = str_replace('\r\n','<br>',$story_text);

          //$story_text wird mit ein paar anderen variablen in eine .txt-datei gespeichert
          $inhalt="$author_name
          $diezeit
          $chapter_title
          $next_text_1
          $next_text_2
          $story_text";

          $fq = fopen("$datei","a+");
          fputs($fq,$inhalt);
          fclose($fq);

          //und wird dann auch wieder ausgelesen und ausgegeben
          $array = file($datei);
          echo "$array[5]";

          Tja in der Textarea wurde eingegeben:
          hdfgdh "hjjg" kdskh'kjkkj 'jkj'

          Gesoeichert und ausgegeben wird:
          hdfgdh "hjjg" kdskh'kjkkj 'jkj'

          mfg Melli

          1. Hi!

            Kannst ja mal das probieren:

            <?php
            //get text
            $text = $_POST['text'];
            /***********************
            * Jetzt ist darauf zu achten, das schon
            * von dem formular die entities mitgesendet werden.
            * darum wollen wir diese nun beseitigen.
            ***********************/
            $text = str_replace("'", "'", $text); //in "" müssen ' nicht entitiet werden!
            $text = str_replace('"', '"', $text); //in '' müssen " nicht entitiet werden!
            $text = nl2br($text); //Zeilenumbrüche umwandeln.
            $text = str_replace('<br>', '<br />', $text); //XHTML konform machen.
            $fhandle = fopen('bla.txt', 'w+');
            fwrite($text, $fhandle);
            fclose($fhandle);
            //-- Soweit so gut, jetzt kannst du noch schauen obs geklappt hatt:
            header('Content-type: text/plain'); //Verhindert das html verwendet wird.
            print $text;
            ?>

            Hoffe es funktioniert und ist verständlch..

            Mfg, EmCee

      2. Hello,

        schau Dir mal die Bemerkungen zu den Funktionen stripslashes(), addslashes() und get_magic_quotes_gpc() an.

        Dann sollte es Dir klar werden, was PHP da macht und warum.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Hallo,

          ok, danke euch allen, hab das Problem kapiert und auch schon gelöst.

          mfg Melli

  2. Hi,

    Wie kann ich die ""-Zeichen verhindern?

    Die -Zeichen werden automatisch erzeugt, wenn macicquotes in der php.ini aktiviert sind.http://de3.php.net/manual/de/function.get-magic-quotes-gpc.php. Das ist, aus Sicherheitsgruenden, gut so.

    Zur Ausgabe verwendest Du stripslashes() http://de3.php.net/manual/de/function.stripslashes.php, Zeilenumbrueche wandelst Du mit nl2br() in Strings mit BR-tags http://de3.php.net/manual/de/function.nl2br.php.

    Gruesse  Joachim