Schreibweise Kontrollausgabe
Adolf
- php
Ich beziehe mich mal auf einen alten Beitrag von Tom,
speziell auf die Ausgabe:
echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";
Sind die htmlspecialchars zum Darstellen der Verzeichnisstruktur u. -namen unbedingt nötig?
Würde ein einfaches print_r(get_subdirs($start_folder)); in diesem Fall nicht ausreichen?
Ist die Schreibweise echo '<pre>' . "\n"; der oben angewandten vorzuziehen?
Könnte mich jemand aufklären bitte?
Gruß
Adolf
Hello,
Ich beziehe mich mal auf einen alten Beitrag von Tom,
speziell auf die Ausgabe:echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";
Das müsste auch korrekt für HTML-Ausgabe
echo "<pre>\r\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\r\n";
heißen.
Sind die htmlspecialchars zum Darstellen der Verzeichnisstruktur u. -namen unbedingt nötig?
Würde ein einfaches print_r(get_subdirs($start_folder)); in diesem Fall nicht ausreichen?
Ja, unbedingt sind sie nötig, bedingt könnte man darauf verzichten. Die Bedingungen entnimm bitte dem Artikel
http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
gut, Danke.
Gruß
Adolf
Hi,
echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";Das müsste auch korrekt für HTML-Ausgabe
echo "<pre>\r\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\r\n";heißen.
Wieso sollte es?
MfG ChrisB
Hello,
echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";Das müsste auch korrekt für HTML-Ausgabe
echo "<pre>\r\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\r\n";heißen.
Wieso sollte es?
Weil wenn Zeilenumbrüche, dann die für HTML vorgesehenen.
Oder was wolltest Du jetzt diskutieren?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
@@Tom:
nuqneH
Wieso sollte es?
Weil wenn Zeilenumbrüche, dann die für HTML vorgesehenen.
Wieso Zeilenumbrüche? Die sind alle gleichermaßen Whitespace, egal ob '\r', '\n' oder eine Kombination aus beidem. Auf die Darstellung im Viewport hat es keinen Einfluss.
Qapla'
Hello Gunnar,
Wieso sollte es?
Weil es "strongly recommended"[1] ist, #13#10 zu verwenden in Anlehnung an die Vorschriften zu HTTP
Generell ist es zwar so ziemlich egal, was man im HTTP-Body so treibt, wo sich HTML ja austobt, aber da alle mir bekannten Browser sich auch an die Vervollständigungsregel halten, nachdem verstümmelte #13#10 in mehrzeiligen Eingabefeldern immer zu vollständigen aufgebaut werden, halte ich mich auch an die obige Regel.
http://www.w3.org/TR/html401/struct/text.html#line-breaks
sagt dazu zwar, dass es egal sei, ob man "\r", "\n" oder "\r\n" benutzte, aber man kann da mMn ruhig auch mal etwas konseqenter werden. Es geht hier übrigenes nicht, wie oft fälschlich dargestellt, um die Eigenheiten der Betriebssysteme bezüglich der Zeilenumbrüche. Die haben da vollkommen außen vor zu bleiben. Hier geht es um Programminterna der Browser, die sich bitteschön alle konform zu verhalten haben, und zwar egal, auf welchem Betriebssystem sie laufen. Die Betriebssysteme haben die HTTP-Daten nebst dem HTML transparent an die Browser weiterzugeben und von ihnen wegzuleiten.
Die HTML-4.01 Spezifikation schreibt "\r\n" also nicht zwingend vor für einen "Control Code Line Break", aber es sollte nicht falsch sein, sich diesen anzugewöhnen.
Wenn ich die Stellen bei den Browserherstellern wiederfinden sollte, wo das so gefordert wurde, werde ich es nochmal hier posten. Es war übrigens ein Draft des Firefox, durch das ich darauf aufmerksam wurde. Ich habs mir leider nicht aufgehoben.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Wieso sollte es?
Weil es "strongly recommended"[1] ist, #13#10 zu verwenden in Anlehnung an die Vorschriften zu HTTP
Leider fehlt die [1], um nachvollziehen zu können, in welchem Kontext diese Aussage getroffen wurde.
http://www.w3.org/TR/html401/struct/text.html#line-breaks
sagt dazu zwar, dass es egal sei, ob man "\r", "\n" oder "\r\n" benutzte, aber man kann da mMn ruhig auch mal etwas konseqenter werden.
Was ist daran „konsequent(er)“, etwas zu machen, was überhaupt nirgends gefordert wird?
Es geht hier übrigenes nicht, wie oft fälschlich dargestellt, um die Eigenheiten der Betriebssysteme bezüglich der Zeilenumbrüche. Die haben da vollkommen außen vor zu bleiben.
Eben - es geht einzig und allein darum, was HTML als Zeilenumbruch ansieht.
Die HTML-4.01 Spezifikation schreibt "\r\n" also nicht zwingend vor für einen "Control Code Line Break", aber es sollte nicht falsch sein, sich diesen anzugewöhnen.
Überflüssig ist es aber.
MfG ChrisB
Hi,
Weil wenn Zeilenumbrüche, dann die für HTML vorgesehenen.
Und wo steht, dass \r\n\ „für HTML vorgesehen“ wäre?
MfG ChrisB
Hi!
echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";
Sind die htmlspecialchars zum Darstellen der Verzeichnisstruktur u. -namen unbedingt nötig?
Theoretisch ist das htmlspecialchars() (auch für alle unvorhergesehenen Fälle) so richtig. Ob es jetzt in diesem speziellen Fall zwingend notwendig ist, sei mal dahingestellt. Das wirst du sicher allein rausbekommen, wenn du weißt, warum bestimmte Zeichen maskiert werden müssen und ob diese Zeichen in deiner Ausgabe vorkommen können.
Ich persönlich verzichte in meiner kontrollierten Testumgebung in der Regel auf diesen zusätzlichen Aufwand. Allerdings gibt es einige Situationen, da ist dies ungünstig, besonders wenn man XML und HTML in den zu kontrollierenden Werten stehen hat.
Auch Situationen wie diese
$foo = 42;
$bar = array(&$foo);
var_dump($bar);
sind beachtenswert, weil man in der Ausgabe kein &int stehen hat sondern:
array(1) {
[0]=>
∫(42)
}
Ist die Schreibweise echo '<pre>' . "\n"; der oben angewandten vorzuziehen?
Warum sollte sie? Warum noch mehr Aufwand für eine Sache treiben, die nur ganz kurz benötigt wird? Der Zeilenumbruch ist im Prinzip komplett nutzlos, wenn du nicht gerade in die Quelltextansicht des Browsers schauen und dort einen Zeilenumbruch sehen willst. Üblicherweise verzichte ich auch auf ein schließendes </pre>, weil es sich nur um eine temporäre Ausgabe handelt. Dabei interessieren mich die ausgegebenen Werte und der möglicherweise nicht richtig formatierte Rest der Seite ist mir egal.
Lo!