Adolf: Schreibweise Kontrollausgabe

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

  1. 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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      gut, Danke.

      Gruß
      Adolf

    2. 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

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      1. 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

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. @@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'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. 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

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. 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

              --
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        2. 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

          --
          RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. 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!