Christoph Schnauß: unbekannte "Zeichen"

hallo Forum,

mich plagt ein kleines Problem, das ich zwar lösen kann, das ich aber nicht ganz verstehe. Es geht um folgendes Beispielkonstrukt: ich habe eine Textdatei "textdatei.txt", in der drei (bei Bedarf auch deutlich mehr) Zeilen stehen. Ihr Inhalt sieht so aus:
  Hier steht der erste Text.
  Hier steht der zweite Text.
  Hier steht der dritte Text.
In mein PHP-Script lese ich die Textdatei so ein:
  $text = file('textdatei.txt')
Damit habe ich einen Array, der mir zum Beispiel mit
  echo $text[1];
wieder die Ausgabe
  Hier steht der zweite Text.
zur Verfügung stellt. Prima. Nur: dahinter steht noch irgendein Zeichen, das einen "Zeilenumbruch" bewirkt, und es scheint _nicht_ \n zu sein. Ich mache also zur korrekten Darstellung daraus
  echo rtrim($text[1]);
Und schon habe ich keine Probleme mehr. Aber was hat mir da rtrim gestrichen?

Laut PHP-Handbuch entfernt rtrim "Leerraum (oder andere Zeichen) vom Ende eines Strings" - großartig, soll es ja in diesem Fall auch. Laut Handbuch wären das folgende Zeichen:
  " " (ASCII 32 (0x20)), ein einfaches Leerzeichen.
  "\t" (ASCII 9 (0x09)), ein Tabulator.
  "\n" (ASCII 10 (0x0A)), ein Zeilenvorschub (line feed).
  "\r" (ASCII 13 (0x0D)), ein Wagenrücklauf-Zeichen (carriage return).
  "\0" (ASCII 0 (0x00)), das NUL-Byte.
  "\x0B" (ASCII 11 (0x0B)), ein vertikaler Tabulator.

Aber welches davon habe ich nun mit meiner Einlesemethode an $text[1] noch hintendran hängen gehabt und mit rtrim($text[1]) wieder gestrichen?

Grüße aus Berlin

Christoph S.

--
Visitenkarte
ss:| zu:) ls:& fo:) va:) sh:| rl:|
  1. Hallo christoph,
    Also ich tippe auf "\r"
    Das ist da irgendwo in Deinem Programmm hinterlegt.
    Wie kommen die Daten in die Datei?
    Viele Grüße aus dem prenzlbg.
    TomIRL

  2. Hi,

    zur Verfügung stellt. Prima. Nur: dahinter steht noch irgendein Zeichen, das einen "Zeilenumbruch" bewirkt, und es scheint _nicht_ \n zu sein.
    Aber welches davon habe ich nun mit meiner Einlesemethode an $text[1] noch hintendran hängen gehabt und mit rtrim($text[1]) wieder gestrichen?

    Kombiniere echo, strlen, substr und ord in geeigneter Weise, um Dir den Code des letzten Zeichens auszugeben ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. hallo Andreas,

      Kombiniere echo, strlen, substr und ord in geeigneter Weise, um Dir den Code des letzten Zeichens auszugeben ...

      Das habe ich (bis auf ord()) durchaus schon probiert, aber leider ergebnislos.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. echo $begrüßung;

    Aber welches davon habe ich nun mit meiner Einlesemethode an $text[1] noch hintendran hängen gehabt und mit rtrim($text[1]) wieder gestrichen?

    bin2hex() wird dir die Hex-Darstellung der Zeichen liefern. Die Ausgabe davon kannst du mit chunk_split() lesbarer gestalten:

    echo chunk_split(bin2hex($delinquent), 2, ' ');

    echo "$verabschiedung $name";

    1. habe d'ehre dedlfix

      echo chunk_split(bin2hex($delinquent), 2, ' ');

      Der Variablenname besitzt einen gewissen Charme. :-)

      man liest sich
      Wilhelm

  4. hallo,

    ich habe noch was vergessen:

    und es scheint _nicht_ \n zu sein

    Das weiß ich, weil ich natürlich auch
      echo str_replace("\n", "", $text[1]);
    ausprobiert habe. Und anstelle von "\n" selbstversrändlich ebenfalls die im Handbuch angegebenen möglichen Zeichen. str_replace hat mir in keinem der im Handbuch angegebenen Fälle für irgendein "Zeichen" ein Ergebnis gebracht.

    Aber, wie gesagt, mit rtrim() habe ich also irgendwas gestrichen. Und damit kann ich beispielsweise einen String in der Form
      rtrim($text[0]).rtrim($text[1]).rtrim($text[2])
    so zusammenkleben, daß ich keine "Umbrüche" mehr drinhabe. Funktioniert, bloß weiß ich auch trotz der bisher eingegangenen Hinweise von euch nicht, warum.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. hi,

      Funktioniert, bloß weiß ich auch trotz der bisher eingegangenen Hinweise von euch nicht, warum.

      Dann wäre es vielleicht schön, wenn du den Hinweisen auch mal nachgehst - mit den Vorschlägen von Andreas oder dedlfix sollte das ja durchaus rauszukriegen sein, was es denn nun für ein ominöses Zeichen ist.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }