Mit explode einen String Teilen - explodieren
Jenkins
- php
Hallo Leute, ich habe folgendes problem: und zwar will ich einen String aus einer Datei splitten aber das will nicht wirklich funktionieren. Wenn ich den String dann ausgebe dann kommt immer nur ein buchstabe. Mit normalen strings funktioniert es. Der Sinn ist einfach aus einem Formular die ausgefüllten Felder in die datei schreiben und den Text aus der datei als Tabelle ausgeben lassen. Schreiben ist kein thema nur das explode klappt nicht so wie ich es dachte.
MfG Jenkins
Falls der Code den ich bisher habe nötig ist poste ich ihn natürlich auch.
Hallo,
ohne Beispiel geht es nicht. Explode funktioniert, so wie es funktioniert (;-).
Du kennst zudem serialize() und unserialize()? Auch die Möglichkeit, durch Input-Feldbenennung bereits ein Array zu erzeugen?
Name:<input type="text" name="myForm[name]">
Mail:<input type="text" name="myForm[mail]">
var_dump($_GET["myForm"]) gibt dir dann alle Formulardaten als Array. Serialisieren, speichern, kein explode nötig.
Gruß
jobo
Hallo,
ohne Beispiel geht es nicht. Explode funktioniert, so wie es funktioniert (;-).
Du kennst zudem serialize() und unserialize()? Auch die Möglichkeit, durch Input-Feldbenennung bereits ein Array zu erzeugen?
Name:<input type="text" name="myForm[name]">
Mail:<input type="text" name="myForm[mail]">var_dump($_GET["myForm"]) gibt dir dann alle Formulardaten als Array. Serialisieren, speichern, kein explode nötig.
Gruß
jobo
Hallo,
Okay auch wieder wahr ;€ ich lasse aber mal den teil mit dem fopen raus.
While($lesen = fread($fp,1024)){
Echo $lesen // zur Ausgabe in normalform
$array = explode(',', $lesen, 1);
Echo $array[0];
}
Hallo,
$lesen = "bla,blub,pupp"
$liste = explode(',', $lesen);
var_dump($liste);
so wird ein erster test draus. im folgeschritt checkst du, ob deine leseoperation den korrekten wert in $lesen packt.
aber du machst es wirklich unnötig kompliziert. genau dafür ist file_get_contents und file_put_contents sowie serialize/unserialize da.
Gruß
jobo
Hallo,
$lesen = "bla,blub,pupp"
$liste = explode(',', $lesen);
var_dump($liste);so wird ein erster test draus. im folgeschritt checkst du, ob deine leseoperation den korrekten wert in $lesen packt.
aber du machst es wirklich unnötig kompliziert. genau dafür ist file_get_contents und file_put_contents sowie serialize/unserialize da.
Gruß
jobo
Hi,
wieso soll ich mir das unnötig kompliziert machen? Einfach den Text der Datei aufsplitten... Da ist ja einfach nur explode zu benutzen...Wieso soll ich dann funktionen wie file_get_contents und file_put_contents benutzen? Ich möchte einfach nur explode benutzen und würde gerne wissen wieso es nicht artgerecht geteilt wird!!!
Gruß Jenkins
Hallo,
wieso soll ich mir das unnötig kompliziert machen? Einfach den Text der Datei aufsplitten...
Das war ja nur der zweite Teil meiner Antwort.
Da ist ja einfach nur explode zu benutzen...Wieso soll ich dann funktionen wie file_get_contents und file_put_contents benutzen? Ich möchte einfach nur explode benutzen und würde gerne wissen wieso es nicht artgerecht geteilt wird!!!
Das habe ich im ersten beantwortet. Du musst schon testen/wissen, was für einen String du verfütterst. Explode funktioniert ziemlich simpel. Es liegt an Deinem String, den du offenbar nicht korrekt ausliest oder aber der nicht mit den Delimitern versehen ist, die du angibst. var_dump() könnte dir, siehe mein Beispiel, da helfen.
Gruß
jobo
Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)
Wie jobo schon erklaert hat, bezog sich lediglich der zweite Teil seiner Antwort auf eine andere Herangehensweise.
Der Erste macht, was Du versuchst. Hast Du spasseshalber mal den gelesenen String ausgegeben? Mach das mal.
Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)
Und du meinst, das versteht jemand aus ohne weiteren Kommentar?
Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)
Und du meinst, das versteht jemand aus ohne weiteren Kommentar?
Jenkins wohl schon. Du auch. Ziel erreicht... (oder hast Du gesucht?) Ist ja auch, wie der Wikiartikel (den ich bis eben gar nicht kannte) schon erwähnt, mittlerweile ein Internet Meme und auch ausserhalb der 'Szene' nicht unbekannt.
Ich gehe jedenfalls davon aus, das Jenkins sich deshalb so nennt. Ansonsten weiß Jenkins jetzt, daß dieser Name zumindest im internet schnell vorbelastet ist. Mann könnt sich auch gleich 'noob' oder besser 'boon' nennen. Und für die halte ich hier eine Erklärung auch nicht wirklich nötig.
Jenkins wohl schon. Du auch. Ziel erreicht... (oder hast Du gesucht?)
Nein, mir ist Leeroy durchaus ein Begriff, auch wenn ich selbst kein WoW Spiele - aber für jemanden, der über 7 Jahre ein Spieleblog betreibt, wäre es eine Schande so ein Mem nicht zu kennen.
Moinsen!
Nein, mir ist Leeroy durchaus ein Begriff, auch wenn ich selbst kein WoW Spiele - aber für jemanden, der über 7 Jahre ein Spieleblog betreibt, wäre es eine Schande so ein Mem nicht zu kennen.
Das waere zumindest wuenschenswert. ;) Hin und wieder machen Leute aber scheinbar immer noch Dinge, von denen sie auch etwas Ahnung haben, bzw. der Job faerbt ab. Ich hab das dumpfe Gefuehl, das wird immer seltener.
Hi,
While($lesen = fread($fp,1024)){
du liest also bis zu 1024 Byte aus der Datei ...
Echo $lesen // zur Ausgabe in normalform
überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...
$array = explode(',', $lesen, 1);
und zerlegst ihn dann in maximal EIN Teilstück. Wie stellst du dir das vor? "Teil mir den String auf, aber mach nur ein Stück draus"? Lies am besten nochmal nach, was explode() mit dem dritten Argument macht. Vielleicht möchtest du den Parameter sogar ganz weglassen; das kann ich aber im Moment nicht abschätzen (kommt drauf an, was du mit den Daten weiter machen willst).
Echo $array[0];
Hier dürfte nochmal der unveränderte String erscheinen.
Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.
So long,
Martin
Hi,
While($lesen = fread($fp,1024)){
du liest also bis zu 1024 Byte aus der Datei ...
Echo $lesen // zur Ausgabe in normalform
überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...
$array = explode(',', $lesen, 1);
und zerlegst ihn dann in maximal EIN Teilstück. Wie stellst du dir das vor? "Teil mir den String auf, aber mach nur ein Stück draus"? Lies am besten nochmal nach, was explode() mit dem dritten Argument macht. Vielleicht möchtest du den Parameter sogar ganz weglassen; das kann ich aber im Moment nicht abschätzen (kommt drauf an, was du mit den Daten weiter machen willst).
Echo $array[0];
Hier dürfte nochmal der unveränderte String erscheinen.
Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.
So long,
Martin
Hi,
Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.
Nein ich war eben mit meinem Handy im internet und da schreibt er mir die Keywords am anfang nach dem Satz groß und hab vergessen es dort zu ändern auf klein ;)
Hier dürfte nochmal der unveränderte String erscheinen.
»»
Jaein er gibt mir bei 0 den ersten punkt was vor dem "," steht aber auch nur in der ersten zeile
du liest also bis zu 1024 Byte aus der Datei ...
Hab es so gelernt das wir bis zu 1024 Bytes aus der Datei lesen sollen jenachdem was eben in eine Zeile der Datei schreibt ist ja nicht immer nur paar zeichen
überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...
Ja der gelesene string is ja eigl korrekt da steht was drin und wird ja auch ins array gespeichert.
Hoi!
Hab es so gelernt das wir bis zu 1024 Bytes aus der Datei lesen sollen jenachdem was eben in eine Zeile der Datei schreibt ist ja nicht immer nur paar zeichen
Jau. Is Deine Datei vielelicht kleiner als 1024 Bytes? (http://php.net/manual/de/function.fread.php)
überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...
Ja der gelesene string is ja eigl korrekt da steht was drin und wird ja auch ins array gespeichert.
Und auch nur eine Zeile?! Vielleicht suchst Du eher fgets() oder fgetss()?
@@Der Martin:
nuqneH
du liest also bis zu 1024 Byte aus der Datei ...
Was problematisch ist.
überprüfst hier, ob der gelesene String korrekt ist (und, ist er?)
Überprüft er? Der gelesene String ist möglicherweise nicht korrekt, weil die Bytesequenz eines Zeichens nicht mehr komplett ist.
Es wird doch (hoffentlich) UTF-8 als Zeichencodierung verwendet, oder?
Die Nicht-ASCII-Zeichen werden ja in UTF-8 durch eine Sequenz mehrerer Bytes dargestellt. Und kann nicht wissen, ob man nicht durch die Beschränkung auf 1024 eine Sequenz zerhackt.
Es ist immer problematisch, auf Byte-Ebene anstatt auf Zeichen-Ebene zu arbeiten.
Qapla'
Hi,
gewöhne dir bitte mal sinnvolles Zitieren an - nicht das komplette Vorposting, sondern nur die Aussagen, auf die du dich konkret beziehst. Schau dir bitte an, wie andere hier das machen.
MfG ChrisB
Falls der Code den ich bisher habe nötig ist poste ich ihn natürlich auch.
Nein, der Code ist nicht nötig - weitere beschreibungen deiner Vorgehensweise natürlich auch nicht - wir sind immer daran interessiert, unsere hellseherischen Fähigkeiten zu schärfen :D
SCNR