Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Problems, wenn PHP Zeilenumbrüche verarbeitet

Detaillierte Erklärung des Problems, wenn PHP Zeilenumbrüche verarbeitet

黄舟
黄舟Original
2017-07-27 14:40:361392Durchsuche

Lassen Sie uns zunächst über den Unterschied zwischen r und n sprechen
Der Ursprung und der Unterschied der beiden Konzepte „Carriage Return“ und „Line Feed“
In Computern, bevor es auftauchte, Es gab etwas namens Teletype Model 33 (das Konzept von tty unter Linux/Unix stammt davon), das 10 Zeichen pro Sekunde eingeben konnte, aber es hatte ein Problem, das heißt, es konnte beim Ändern einer Zeile eine Zeile zu Ende schreiben , es dauert 0,2 Sekunden, was ausreicht, um zwei Zeichen in diesen 0,2 Sekunden einzugeben, dann geht dieses Zeichen verloren

Eine Möglichkeit, dieses Problem zu lösen besteht darin, nach jeder Zeile zwei Endzeichen einzufügen, was der Schreibmaschine mitteilt, den Druckkopf am linken Rand zu positionieren; das andere heißt „Zeilenvorschub“, was der Schreibmaschine mitteilt, das Papier nach unten zu bewegen . Eine Zeile. Dies ist der Ursprung von „Zeilenvorschub“ und „Wagenrücklauf“, was an ihren englischen Namen zu erkennen ist.

Später wurde der Computer erfunden und diese beiden Konzepte wurden in den Computer eingeführt. Zu dieser Zeit war Speicher sehr teuer und einige Wissenschaftler hielten es für zu verschwenderisch, am Ende jeder Zeile zwei Zeichen hinzuzufügen. Daher gab es in Unix-Systemen eine Meinungsverschiedenheit darüber, dass am Ende jeder Zeile nur ein Zeichen hinzugefügt wurde . „e034eb85b47e532220cbec4da9635965“, was im Windows-System „n“ ist; das Ende jeder Zeile ist „e034eb85b47e532220cbec4da9635965“, was im Mac-System „nr“ ist; jeder Zeile ist „< „Enter>“, also „n“;. Eine direkte Konsequenz ist, dass, wenn die Datei unter dem Unix/Mac-System in Windows geöffnet wird, der gesamte Text zu einer Zeile wird; in Windows unter Unix/Mac geöffnet wird, befindet sich möglicherweise ein zusätzliches ^M-Symbol am Ende jeder Zeile

Beim Programmieren in C-Sprache (Windows-System)
r kehrt zum Anfang dieser Zeile zurück Zeile, die die vorherige Ausgabe dieser Zeile zurückgibt.

Zum Beispiel: (Beachten Sie, dass das Folgende C++-Code ist)
Am Ende wird nur xixi angezeigt, und hahaha abgedeckt mit

int main (){cout << "hahaha" << "\r" << "xixi" ;}
n ist ein Wagenrücklauf+ Zeilenumbruch: Bewegen Sie den Cursor zuerst an den Anfang der Zeile und wechseln Sie dann zur nächsten Zeile, die der Anfang der nächsten Zeile ist


int main()
{
cout << "hahaha" << "\n" << "xixi" ;
}

Der Ausdruck der beiden Zeilenumbrüche
im Normalfall In Dateien wie .txt, .php usw. sind die Zeilenumbrüche „rn“, „n“, „r“, aber bei der Anzeige in HTML-Dateien (hier ein Hinweis: die Zeilenumbrüche im TEXTAREA-Textfeld von HTML sind auch „r“) oder „n“) ist das „
Verwenden Sie PHP-Skript zum Konvertieren.

Der Code lautet wie folgt (aus dem PHP-Handbuch):

//Order of replacement
$str="Line1\nLine2\rLine3\r\nLine4\n";
$order=array("\r\n","\n","\r");
$replace=&#39;<br/>&#39;;
$newstr=str_replace($order,$replace,$str);

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Problems, wenn PHP Zeilenumbrüche verarbeitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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