Der Grund, warum PHP fgets das Newline-Zeichen am Ende der Zeile ignoriert, und seine Lösung

PHPz
Freigeben: 2023-04-11 11:36:02
Original
2171 Leute haben es durchsucht

PHP ist eine beliebte Programmiersprache für die Entwicklung von Webanwendungen und dynamischen Websites. Bei der Verarbeitung von Dateieingaben wird die Funktion fgets() normalerweise verwendet, um eine Textzeile aus einer Datei zu lesen. Allerdings ignoriert die Funktion fgets() manchmal Newline-Zeichen am Ende einer Zeile, was zu Programmfehlern und unvorhersehbaren Ergebnissen führen kann. In diesem Artikel werden wir die Ursachen und Lösungen für dieses Problem untersuchen.

Funktion und Verwendung der Funktion fgets()

In PHP wird die Funktion fgets() verwendet, um eine Textzeile aus dem Dateizeiger zu lesen. Die Syntax dieser Funktion lautet wie folgt:

string fgets ( resource $handle [, int $length ] )
Nach dem Login kopieren

Unter diesen ist der Parameter $handle ein Zeiger auf eine offene Datei, und der Parameter $length ist optional und stellt die maximale Anzahl der aus der Datei gelesenen Bytes dar. Wenn der Parameter $length weggelassen wird, wird die gesamte Textzeile gelesen, einschließlich des Newline-Zeichens am Ende der Zeile. Der Rückgabewert der Funktion fgets() ist die gelesene Textzeile, einschließlich des Newline-Zeichens am Ende der Zeile.

Der Grund, warum die Funktion fgets() das Newline-Zeichen am Ende der Zeile ignoriert

In einigen Fällen ignoriert die Funktion fgets() möglicherweise das Newline-Zeichen am Ende der Zeile, zum Beispiel:

  1. The Die Datei wurde abgeschnitten oder unvollständig geschrieben, was zum Ende der Zeile führte. Es gibt keine Zeilenumbrüche.
  2. In Windows-Systemen besteht das Ende einer Zeile in einer Textdatei normalerweise aus einem Wagenrücklauf (CR) und einem Zeilenvorschub (LF), während es in Linux- und Unix-Systemen das Ende einer Zeile in einer Textdatei ist nur ein Zeilenvorschub (LF). Wenn Sie eine Textdatei auf einem Linux- oder Unix-System auf einem Windows-System lesen, ignoriert die Funktion fgets() Zeilenumbrüche am Ende der Zeile.

So lösen Sie das Problem, dass die Funktion fgets() das Newline-Zeichen ignoriert

Um dieses Problem zu lösen, können Sie die folgenden zwei Methoden verwenden:

Methode 1: Verwenden Sie die Funktion trim(), um das Newline-Zeichen zu entfernen am Ende der Zeile

trim()-Funktion Es handelt sich um eine in PHP integrierte Funktion, die Leerzeichen und bestimmte Zeichen an beiden Enden einer Zeichenfolge entfernen kann. Wenn Sie die Funktion trim() verwenden, um die von der Funktion fgets() zurückgegebene Textzeichenfolge zu verarbeiten, können Sie sicherstellen, dass das Newline-Zeichen am Ende der Zeile nicht ignoriert wird. Hier ist ein Beispielcode:

$file = fopen("filename.txt", "r");
while(!feof($file)){
   $line = trim(fgets($file));
   echo $line . "<br>";
}
fclose($file);
Nach dem Login kopieren

Methode 2: Verwenden Sie die Funktionen fread() und str_replace() im Windows-System

Wenn Sie eine Textdatei im Linux- oder Unix-System im Windows-System lesen und das Ende behalten möchten line Für Newline-Zeichen können Sie die Funktionen fread() und str_replace() verwenden. Die Funktion fread() kann eine bestimmte Anzahl von Bytes aus einer Datei lesen, während die Funktion str_replace() bestimmte Zeichen in einer Zeichenfolge ersetzen kann. Das Folgende ist ein Beispielcode:

$file = fopen("filename.txt", "r");
while(!feof($file)){
   $line = fread($file, 10000);
   $line = str_replace("\n", "\r\n", $line);
   echo $line . "<br>";
}
fclose($file);
Nach dem Login kopieren

Beide oben genannten Methoden können das Problem lösen, dass die Funktion fgets() das Newline-Zeichen am Ende der Zeile ignoriert. Welche Methode Sie wählen, hängt von Ihren spezifischen Programmanforderungen und dem Dateityp ab. Die Funktion

Summary

fgets() ist eine häufige Funktion in PHP zum Lesen von Dateizeilentext, ignoriert jedoch manchmal das Newline-Zeichen am Ende der Zeile, was zu Programmfehlern und unvorhersehbaren Ergebnissen führt. Um dieses Problem zu lösen, können wir die Funktion trim() oder die Funktionen fread() und str_replace() verwenden, um das Newline-Zeichen am Ende der Zeile zu verarbeiten. Natürlich müssen Sie bei der Verwendung dieser Funktionen auch auf Faktoren wie Dateikodierung und Systemumgebung achten, um andere Probleme zu vermeiden.

Das obige ist der detaillierte Inhalt vonDer Grund, warum PHP fgets das Newline-Zeichen am Ende der Zeile ignoriert, und seine Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!