Problem mit file()

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Xmopf
Mitglied
Beiträge: 85
Registriert: 17.04.2002 09:21
Wohnort: Sauerland

Problem mit file()

Beitrag 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
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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.
Xmopf
Mitglied
Beiträge: 85
Registriert: 17.04.2002 09:21
Wohnort: Sauerland

Beitrag 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.
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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
Antworten

Zurück zu „Coding & Technik“