PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrzeilige Eingabefelder auslesen und in Array schreiben


Kaldoran
19.09.2007, 20:38:44
Hallo,

Ich möchte ein mehrzeiliges Eingabefeld (textarea) aus einem html Formular per submit in ein php array schreiben. Jetzt weis ich halt nicht genau, wie ich im php Teil, die einzelnen rows des Textareas anspreche, um sie ins array zu schreiben.

Ich hoffe ich hab mich verständlich ausgedrückt.

Gruß Kaldoran

z0iD
19.09.2007, 21:14:22
Welchen Namen (name="" Attribut) hat Dein Textfeld und wie hast Du es abgeschickt (post, get, ...)?

Kaldoran
19.09.2007, 21:20:31
Der name der Textarea ist: linkliste

und übertragen wird das ganze mittels POST.

z0iD
19.09.2007, 21:37:18
->RTFM (http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=185&group=32)

Kaldoran
19.09.2007, 21:50:43
Das löst mein Problem nicht. Hier wird ledeglich der Inhalt der ganzen Textarea in eine Variable geschrieben. Ich möchte jedoch es jedoch so haben, falls dies überhaupt möglich ist:

Den Inhalt von Zeile eins des Textareas in den ersten Teil des arrays
Den Inhalt von Zeile zwei des Textareas in den zweiten Teil des arrays...

so das ich am Ende z.B. mit echo $array[3]; den Inhalt der ursprünglich 4. Zeile des Textarea ausgeben kann.

z0iD
19.09.2007, 23:56:58
Ok, dann war der RTFM Kommentar deplaziert.

Problem ist dass Du nicht weißt von welchem System das ganze kam (so weißt Du nicht ob ein Absatz aus "\r\n" (Windows), "\n" (Linux/Unix) oder "\r" (Apple) besteht). Du solltest den Inhalt daher durch nl2br() jagen (das macht aus allen Absätzen jeweils '<br />'). Problem ist dann dass der Benutzer das hätte eingeben können, daher solltest Du vorher den ursprünglichen Text durch htmlspecialchars jagen.
Wenn Du das alles gemacht hast, hast Du eine Zeichenkette, bei der alle Zeilenumbrüche durch '<br />' gekennzeichnet sind. Das kannst Du dann ganz einfach mit explode() auseinanderpflücken.
Falls Du eine der Verwendeten Funktionen nicht kennst kannst Du sie einfach hier in der Befehlsreferenz oder direkt bei php.net (http://php.net) nachsehen.

Nachtrag: Man kann eigentlich auch einfach explode() direkt anwenden, und einfach hintereinander auf \r\n dann \n und dann \r prüfen. Wenn es das erste nicht gibt, dann das zweite oder dritte.

xlb
20.09.2007, 01:39:49
... oder man verwendet preg_split() (http://de3.php.net/manual/de/function.preg-split.php) mit entsprechend definiertem Suchmuster ...

z0iD
20.09.2007, 01:47:20
... oder man verwendet preg_split() (http://de3.php.net/manual/de/function.preg-split.php) mit entsprechend definiertem Suchmuster ...
... und wirft für nichts und wieder nichts die regex Maschine an.

xlb
20.09.2007, 02:02:28
... und wirft für nichts und wieder nichts die regex Maschine an.

Sorry, aber deinen Weg halte ich für ebenso wenig performant ... - da kann man die Engine ruhig mal "machen lassen". Man könnt's ja mal testen ...

z0iD
20.09.2007, 03:14:32
Sorry, aber deinen Weg halte ich für ebenso wenig performant ... - da kann man die Engine ruhig mal "machen lassen". Man könnt's ja mal testen ...

Mein Vorschlag läuft aber asymtotisch in weniger Zeit, in linearer nämlich. ;)
Und wie ich in einem Nachtrag erwähnt habe gehts noch einen bedeutenden Tack einfacher und schneller.

Kaldoran
21.09.2007, 21:15:41
So ich habs nun hinbekommen.

Verwendet hab ich nur explode und str_split

nl2br() und die anderen funktionen die genannt wurden, hab ich nicht gebraucht.