2017-12-08 5 views
0

Ich fand, dass in dem muilti-Modul, das von Phalcon-Tool erstellt wird, diesen Code hat:warum entfernen " n", " r", " t" in Phalcon

$application = new Application($di); 
echo str_replace(["\n","\r","\t"], '', $application->handle()->getContent()); 

Warum entfernen "\ n", "\ r", "\ t"?

Antwort

0

Wie Spangen darauf hinwies, sind dies die Escape-Sequenzen für einige spezielle 'Whitespace'-Zeichen.

Dieser Link hier hat mehr Informationen über sie: http://us3.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

nun einen wichtigen Hinweis: für sie, wie in PHP soll arbeiten, müssen Sie sie in doppelte Anführungszeichen umschließen, wie: "\t", "\n". Einfache Anführungszeichen erzeugen nicht die beabsichtigten Effekte dieser Escape-Sequenzen: '\t', '\n'.

Um dies zu veranschaulichen, können Sie diesen Code ausführen und die Ergebnisse sehen. Das Ausführen von der Konsole wie php myfile.php kann einige visuelle Fehler verursachen, und wenn Sie es im Browser ausführen, müssen Sie den 'Quellcode' anzeigen.

echo "Let's test... "; 
echo "Because no new line characters were added, this sentence will be printed in the same line as the previous phrase."; 
echo "\n"; 
echo "But now a new line was added, by typing \\n enclosed in double quotes."; 
echo "\n"; 
echo "Now, let's add a tab, between the next two words: hello \t there."; 
echo "\n"; 
echo "Now, let's add a carriage return, which will 'force' the 'cursor' in this string to move to the beginning, thus 'splitting' this string into two. Adding it now: \r There, I just added it before this last sentence."; 
echo "\n"; 
echo 'Finally, these special characters will not work as intended if we just enclose the string with single quotes, as done in this string: \n \t \r'; 

hier Dieser Link weitere Informationen über den Unterschied zwischen den neuen Linien und Wagenrücklauf hat: https://stackoverflow.com/a/12747850/466395


Also ja, in der Original-Code, den Sie geschrieben, entfernt die Person diese Sonderzeichen str_replace mit(), weil sie dazu neigen, "visuelle Störungen" (unbeabsichtigte fehlerhafte Ausgabe) in der Konsole zu erzeugen.

+0

Hinweis: Entschuldigung, wenn ich eine lange Erklärung dieser Zeichen angeboten habe. Für einen Moment dachte ich, du wüsstest nicht, was sie sind (ist das der Fall?). Aber ja, die _reason_ für den ursprünglichen Code, den Sie gepostet haben, ist für die Bereinigung der Ausgabe. – YOMorales

+0

Danke! Das bringt mich dazu, mehr zu lernen. In meinem Projekt lässt mich dieser Code fehlschlagen HTML, jetzt ist das Problem gelöst. – goozp

0

Dies ersetzt Zeilenvorschübe, Zeilenvorschübe und Tabulatoren durch ein einzelnes Leerzeichen, sodass die Anwendungsdetails in STD_OUT als einzelne Zeile ohne Umbruch geschrieben werden können.

Verwandte Themen