Seite 1 von 1

Problem mit file()

Verfasst: 02.02.2003 22:00
von Xmopf
Hallo,

ich lese den Inhalt einer Datei mit file() in ein Array ein. Jetzt steht im Handbuch, dass der Zeilenumbruch "\0" mit in das Array geschrieben wird, und mit hilfe von trim() entfernt werden muss.

Allerdings bekomme ich das mit dem trim() nicht hin.

Wenn ich $einarray = trim($einarray); mache, ist $einarray nachher kein Array mehr.

Muss ich trim() mit einer Schleife auf jedes Element des Arrays zugreifen lassen?

THX
Xmopf

Verfasst: 02.02.2003 22:06
von Jensemann
Hi

In einer schleife, aber:

1. Zeilenumbruch ist \n (unix) nicht \0 oder \r\n (dos).
2. entfernt trim() mehr als nur den letzten zeilenumbruch, es entfernt auch überflüsse whitespaces an anfang und ende des strings.

Verfasst: 02.02.2003 22:12
von Xmopf
Danke für die fixe Antwort.

Es steht in jeder Zeile nur ein Wort , deshalb war für mich nur der Zeilenumbruch interessant :wink:.

Aus dem php-Handbuch
Anmerkung: Jede Zeile in dem resultierenden Array enthält das Zeilenende ('\0'), weshalb Sie trim() verwenden müssen, falls Sie dieses Zeichen nicht vorhanden sein soll.
Daher hatte ich das "\0".

Danke werd es dann mal mit ner Schleife testen.

Verfasst: 02.02.2003 23:28
von Jensemann
Xmopf hat geschrieben:
Anmerkung: Jede Zeile in dem resultierenden Array enthält das Zeilenende ('\0'), weshalb Sie trim() verwenden müssen, falls Sie dieses Zeichen nicht vorhanden sein soll.
Daher hatte ich das "\0".

Danke werd es dann mal mit ner Schleife testen.
Dann scheint php wohl intern \0 als zeilenvorschub zu verwenden, weis net kann es mir grad net so recht erklären, evtl. um den unix/mac/doc problem nicht zu begegnen.

Falls es dich interessiert mal nen auschnitt aus man ascii mit den sonderzeichen:

Code: Alles auswählen

       Oct   Dec   Hex   Char           Oct   Dec   Hex   Char
       ------------------------------------------------------------
       000   0     00    NUL '\0'       100   64    40    @
       007   7     07    BEL '\a'       107   71    47    G
       010   8     08    BS  '\b'       110   72    48    H
       011   9     09    HT  '\t'       111   73    49    I
       012   10    0A    LF  '\n'       112   74    4A    J
       013   11    0B    VT  '\v'       113   75    4B    K
       014   12    0C    FF  '\f'       114   76    4C    L
       015   13    0D    CR  '\r'       115   77    4D    M
Wobei LF is eben der linefeed (zeilenvorschub) wird bei unix als zeilenumbruch verwendet, wo man auch nochmal sieht das es \n ist, und CR eben Cariage Return (Wagenrücklauf) bei dos in kombination mit Linefeed (\n) als zeilenvorschub verwendung findet.

In der englischen php doku wird \0 übrigens nicht erwähnt, da wird nur vom zeilenumbruch gesprochen.

Mfg
Jens