replace zwecks \n

  • Hallo,
    mein erster Post im Forum und schon ne Frage :|
    Ich bin dabei, mich in Ajax einzuarbeiten und wollte in dieser Lernphase ein paar Beispielcodes erstellen. Eines der Beispiele war eine "Preview" Funktion, welche auch recht gut funktioniert. Lediglich eines bereitet mir Kopfschmerzen, und nach ueber 2 Stunden googlen, SuFu nutzen, was immer noch nichts gebracht hat, wende ich mich doch an ein Forum. ;)
    Das Problem ist folgendes: Ich bringe es irgendwie nicht fertig, einen Zeilenumbruch in der <textarea> im "HTML" Teil durch <br> ersetzen zu lassen. Versucht habe ich es auf verschiedene Art und Weisen, welche ich untern noch erlaeutern werde. Erstmals die beiden Dateien:

    index.php

    export.php

    PHP
    <?php
    $text = $_GET['text1'];
    $text2 = stripslashes($text);
    $text3 = str_replace("\n", "<br />", $text2);
    echo $text3;
    ?>

    Wie man in der export.php sieht, habe ich schon verschiedenes versucht, aus einem \n ein <br /> zu machen. Auch in der index.php habe ich einige Beispielcodes, die ich ergoogled habe, eingefuegt, aber nichts davon brachte mir das erwuenschte Ergebnis. Einige Tests haben noch Spuren im Quelltext hinterlassen (function ggnore(str) { }), was aber nicht weiter dramatisch sein sollte ;)

    Die "eigentliche" Preview Funktion klappt wunderbar, allerdings funktionieren keine Zeilenumbrueche..Warum auch immer :/

    Hat jemand einen Tip fuer mich, wie ich das bestmoeglichst realisieren kann? Ich bin derzeit mit meinem Latein am Ende und schon ziemlich am Verzweifeln.

    Ein fettes Danke im Vorraus.

    LG,

    yuuki.

  • Was auch evtl. ein Problem sein könnte, dass du den Text via GET übergibst. Da Newlines nur encoded (urlencode) in der URL stehn können musst, du vielleicht ein urldecode oder so machen ?

    Probiers mal indem du das Formular via POST retounierst.

  • versuche mal statt '\n' die Zeichenfolge '%0D' zu ersetzen. Das ist das HTML encoding fuer carriage return
    Du kannst die einzelnen Zeichen nachschauen hier und auch damit herum experimentieren.

    Ajax erfordert Get

    Nein. http://www.xul.fr/en-xml-ajax.html#ajax-post.


    Was Du da machst, also AJAX Grundlagen lernen, ist natuerlich zu Uebungszwecken und Verstaendnis klasse und sinnvoll.
    Aber was Du vielleicht nicht weisst: Fuer den Praxisfall gibt es mittlerweile sehr starke Bibliotheken, die dich von diesem
    low-level "request zusammenbauen" befreien. Z.B. prototype.js ist sehr populaer.

  • Nachdem '\n' aber newline und nicht carriage return ist, sollte man wenn, dann '%0A' versuchen zu ersetzen.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Hey,

    ich habe es mal mit

    Code
    val = val.replace('/%0D/g', '<br />');
    val = val.replace('/%0D', '<br />');

    versucht, aber das geht immer noch net :(
    das mit den Bibliotheken ist mir klar, aber wie soll mans lernen ohne es zu ueben, und das beispiel ist (eigentlich) recht simpel :)
    /edit
    auch

    Code
    val = val.replace('/%0A', '<br />');
    val = val.replace('/%0A/g', '<br />');

    bringt mir nichts -_-

    Langsam ist es echt nervig :(

    /edit2

    Code
    val = val.replace('%0A', '<br />');
    val = val.replace('%0D', '<br />');

    macht mich auch net gluecklich =(

  • Entweder versteh i deine Aufgabenstellung falsch oder Du versuchst mittels Ajax was zu laden und in ein textarea zu schreiben, richtig?

    Innerhalb einer textarea sind anderwaltige html tags nicht erlaubt und werden dementsprechend ignoriert. Falls du also html tags in einer textarea darstellen willst, dann mußt du sie entsprechend umkodieren.

    Desweiteren würd ich prinzipiell nach '\n\r' matchen anstatt nur für eines von beiden.

    lg

  • Ah oke .. geschnallt.

    Anders gefragt, wieso läßt du nicht einmal per alert ausgeben, was du per Ajax bekommst (noch bevor du etwaige Ersetzungen machst)?

    LG

  • 1. Die Ersetzungen sollten in der export.php gemacht werden, per nl2br (also alle replaces weg).

    Schon versucht, hat nix gebracht, aber ich versuchs gleich nochmal.
    /Edit:
    Funktioniert nicht. In der index.php hab' ich alle JavaScript replace()s weggemacht, in der export.php steht nun folgendes:

    PHP
    <?php
    $text = $_GET['text1'];
    echo nl2br($text);
    ?>


    Keine Aenderung :(


    2. Ich persönlich verwende viel lieber POST.

    Koennte das die Ursache meines Problems sein? (Also dass ich Get benutze, nicht dass du Post lieber verwendest :p)
    /Edit:
    Hab jetzt nicht die Zeit das zu testen, koennte mir aber vorstellen dass es daran liegt, dass ich GET ansatt POST benutze. Klingt auf jeden Fall logisch. Sobald ich Zeit habe werde ich es testen ;o))


    3. Wenn der Submit-Button nicht anders verwendet wird, benutze ein input type="submit" und verwende das onSubmit-Event im form-Tag

    Werd' ich auch gleich versuchen, muss nur zur Arbeit fahren *fg*
    /Edit:
    Habs mit dem nl2br UND einem <input type="submit"> versucht, und dann im <form> onsubmit="return ajax_call()" eingefuegt - Kein Ergebnis.

  • Ich hab's jetzt mit prototype.js gelöst, du kannst es aber einfach auf deine Funktion adaptieren.
    Bitte entschuldige die etwas ungute Funktionsnamenwahl, aber mir war fad!

    PHP
    <?php
    echo nl2br(stripslashes($_GET['text1']));
    ?>
  • Hey super, klappt ganz gut.
    Danke dir fuer deine Hilfe /bow
    Ich werd mich heute abend mal in den Source Code reinknien und versuchen in zu verstehen, wuenscht mir Glueck :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!