Text aus textarea formatieren
Tim
- php
0 dedlfix
Hallo,
ein Benutzer gibt über ein textarea-Feld formatierten Text, genauer gesagt, kopiert er ihn sogar in dieses Feld.
Dieser Text enthält also Zeilenumbrüche, aber auch Tabs.
Das PHP-Script soll nun diesen Text in HTML umwandeln, indem es dort wo Tabs sind Tabellen draus macht und ansonsten die üblichen </br>-Tags.
Ich dachte an sich, ein einfaches Suchen und Ersetzen und hab mal ganz klein damit anfangen wollen, dass nach jeder Zeile eine Trennlinie gezeichnet wird: (In $ori_text ist der dem Script übergebene Inhalt des Textarea-Felds.)
$lines = array();
$lines = explode("\n", $ori_text);
$lineCount = count($lines);
$newtext = "";
for ($i = 0; $i < $lineCount; $i++){
$newtext .= $lines[$i]."<hr>";
}
echo $newtext;
Leider macht er mir genau am Ende des Textes das <hr>.
Aber warum nur?
Tim
echo $begrüßung;
Aber warum nur?
Diese Frage lässt sich meist beantworten, indem man Kontrollausgaben der Variableninhalte mit echo, print_r oder var_dump in das fehlerhafte Script einbaut.
echo "$verabschiedung $name";
Hi,
Diese Frage lässt sich meist beantworten, indem man Kontrollausgaben der Variableninhalte mit echo, print_r oder var_dump in das fehlerhafte Script einbaut.
genau das hab ich ja gemacht und gesehen, dass anscheinend keine Formatierungen mehr drin sind.
Und ich weiß eben nicht warum :-(
Vielleicht der Vollständigkeit halber, der Anwender trägt per Copy&Paste einen Text in das textarea-Feld ein und beim Klick auf den 'Einlesen'-Button wird per Javascript ein neues Fenster mit einem PHP-Script aufgerufen und der Inhalt der Variable übergeben.
Wie muss ich es denn anstellen, dass bei dieser Aktion die \n und die \t nicht verloren gehen?
Tim
echo $begrüßung;
genau das hab ich ja gemacht und gesehen, dass anscheinend keine Formatierungen mehr drin sind.
"anscheinend" ist für das Programmieren nicht wichtig. Sind sie nun drin oder nicht? Lass dir zur Not die Hex-Werte der einzelnen Bytes der Eingabe mit
echo chunk_split(bin2hex($ori_text), 2, ' ');
anzeigen. Wenn sie nicht drin sind, dann ist das ein HTML-Problem der Textarea, und PHP unschuldig.
Ich nehme doch an, dass $ori_text unverändert -- maximal aus $_GET/_POST kopiert -- ist.
echo "$verabschiedung $name";
"anscheinend" ist für das Programmieren nicht wichtig. Sind sie nun drin oder nicht? Lass dir zur Not die Hex-Werte der einzelnen Bytes der Eingabe mit
"anscheinend" hab ich auch nur gebraucht, weil ich mir nicht sicher war, ob noch irgendwelche Formatierungen enthalten sind oder nicht.
echo chunk_split(bin2hex($ori_text), 2, ' ');
anzeigen. Wenn sie nicht drin sind, dann ist das ein HTML-Problem der Textarea, und PHP unschuldig.
Soweit ich richtig verstehe, sollten dann normalerweise Hex 13 (CR) oder Hex 10 (LF) zu finden sein. Sind aber keine drin.
Ich nehme doch an, dass $ori_text unverändert -- maximal aus $_GET/_POST kopiert -- ist.
Nunja, wie gesagt, wird die Variable per Javascript an das PHP-Script übergeben:
ori_text = document.bericht.ori_text.value;
link = "einlesen.php?ori_text="+ori_text;
(und dann das übliche Fenster-Öffnen)
Wenn ich mir den Text vor dem Öffnen des Fensters mit alert(ori_text) anzeigen lasse, stimmt noch alles.
Also scheint die Übergabe per GET das Ding kaputt zu machen.
Wie könnte ich dem denn entgehen?
Leider kann sich php den Inhalt ja nicht nachher selber holen, wie Javascript das z.B. machen könnte.
Hast Du da ne Idee für mich?
Tim
Hallo,
Also scheint die Übergabe per GET das Ding kaputt zu machen.
Ähm warum willst du denn per GET einen Langen Text mit Zeilenumbrüchen übergeben? Warum nicht POST?
Leider kann sich php den Inhalt ja nicht nachher selber holen, wie Javascript das z.B. machen könnte.
Was spricht dagegen das PopUp ganz wegzulassen und das Programm so zu schreiben, dass es auch ohne JavaScript funktioniert?
Grüße
Jeena Paradies
Hallo
Ähm warum willst du denn per GET einen Langen Text mit Zeilenumbrüchen übergeben? Warum nicht POST?
Post ist mir grundsätzlich auch lieber, aber die Frage ist dann wie übergebe ich per Javascript nicht per Get sondern per Post?
Was spricht dagegen das PopUp ganz wegzulassen und das Programm so zu schreiben, dass es auch ohne JavaScript funktioniert?
An sich ist sieht das so aus, dass der Anwendern ein Formular ausfüllt und an bestimmten Stellen ist das Script in der Lage gewisse Arbeiten dem Anwender abzunehmen. In diesem Fall wird eben ein anderes Script aufgerufen, was die Arbeit macht, die Werte ins Formular überträgt und sich dann wieder selber schließt. Das passiert an mehreren Stellen.
Also per Post übertragen wäre schon die Lösung.
Tim
Hallo,
Post ist mir grundsätzlich auch lieber, aber die Frage ist dann wie übergebe ich per Javascript nicht per Get sondern per Post?
Hm das brauchst du doch beides gar nicht, vor allem wenn du das mit JS machst.
An sich ist sieht das so aus, dass der Anwendern ein Formular ausfüllt und an bestimmten Stellen ist das Script in der Lage gewisse Arbeiten dem Anwender abzunehmen. In diesem Fall wird eben ein anderes Script aufgerufen, was die Arbeit macht, die Werte ins Formular überträgt und sich dann wieder selber schließt. Das passiert an mehreren Stellen.
Wozu gibt es denn globale Variablen die in jedem Fenster zur Verfügung stehen? Du musst doch nur den Text aus deiner Textarea beim klick in eine solche schreiben, dann dein PopUp öffnen und im PopUp auf diese Variable wieder zugreifen und das dort in deine Textarea übergeben schon ist es drinn. Wenn du dann gleich das PHP Script ausführen willst, dann kannst du ja trotzdem ein Formular mit Post erstellen und dann per JavaScript abschicken lassen.
Grüße
Jeena Paradies
echo $begrüßung;
Nunja, wie gesagt, wird die Variable per Javascript an das PHP-Script übergeben:
Ah ja...
ori_text = document.bericht.ori_text.value;
link = "einlesen.php?ori_text="+ori_text;
Mir scheint, dass ori_text hier noch eine Behandlung mit encodeURI() vertragen könnte. Dekodieren auf der PHP-Seite ist nicht nötig, das macht das PHP selbst.
echo "$verabschiedung $name";
Hi dedlfix!
Mir scheint, dass ori_text hier noch eine Behandlung mit encodeURI() vertragen könnte. Dekodieren auf der PHP-Seite ist nicht nötig, das macht das PHP selbst.
Du meinst wohl urlencode() ;-)
Grüße,
Fabian St.
echo $begrüßung;
Du meinst wohl urlencode() ;-)
Nein, ich meine encodeURI, da wir mittlerweile bei JavaScript gelandet sind.
echo "$verabschiedung $name";
Hi!
Du meinst wohl urlencode() ;-)
Nein, ich meine encodeURI, da wir mittlerweile bei JavaScript gelandet sind.
Ups, achso - da habe ich wohl zu ungenau mitgelesen. Sorry ;-)
Grüße,
Fabian St.