björn: Doppelte oder einfache Hochkomma verwenden ?

Hallo

Normalerweise schreiben ich sämtliche Werte in doppelten Hochkomma.
also z.b. border="0"
So wird es ja auch immer in SelfHTML beschrieben.

Wenn man allerdings mit PHP programmiert und eine entspr. Zeile innerh. eines echo Befehls verwenden muss, geht das natürlich nicht mehr und man muss die doppelten in einfache Anführungszeichen ändern.

Oder man schreibt das Kommandozeichen \ davor.

Alles später ändern zu müssen ist natülich nervig.

Von daher würde mich mal die "normale" Vorgehensweise interessieren.

Schreibt ihr im normalen HTML doppelte oder einfache Hochkomma ?
Benutzt ihr bei PHP einfache oder doppelte mit vorangesetztem \  ?

bye
.b

  1. Hallo!

    man kann ja verschiedene echo-"varianten" benutzen:

    a) echo('border="0" '.$variable.' text ');

    b) echo("border="0" $variable text ");

    grüsse sebastian

  2. Hi,

    also ich verwende bevorzugt "" weil innerhalb '' normalerweise keine Variablen ersetzt werden und z.B. \n auch nicht funktioniert, d.h. print "$foo" den Inhalt der Var $foo ausgibt, print '$foo' aber nur den String $foo... So ginge es zwar auch: print '<p>'.$foo.'</p>' aber das wäre mir schon zu umständlich. Wenn Du ganze Blöcke HTML-Code schreiben willst, solltest Du die sog. "heredoc Syntax" verwenden, dann brauchst Du auch " nicht durch " zu entwerten, z.B.:

    print <<< END_OF_HTML
    <body>
     <p class="foo">$foo</p>
    </body>
    END_OF_HTML;

    Bye,
    Danny

  3. Hallo

    hallo

    Schreibt ihr im normalen HTML doppelte oder einfache Hochkomma ?

    "

    Benutzt ihr bei PHP einfache oder doppelte mit vorangesetztem \  ?

    '

    *grins

    bye
    .b

    cu
    ulli

  4. Hallo,

    der Unterschied zwischen einfachem und doppeltem Hochkommata liegt in der Ausführungszeit. In doppelten Hochkommata wird der eingeschlsosene Teil interpretiert, Variablen ausgeführt usw. Bei einfachen wird der String einfach ausgegeben, ohne groß etwas zu interpretieren, folglich ist dies um einiges fixer (ob man es im Endeffekt merkt sei dahingestellt).
    Ich wusste es erst auch nicht und habe lange nach dem Unterschied im Netz gesucht und irgendwo so eine ausführliche Erklärungsseite gefunden. Seit dem nutze ich fast nur noch einfache Hochkommata.

    1. echo "Test $var!";
    2. echo 'Test'.$var.'!';

    Sometimes speed is important ;-) be fast, be faster...

    Ciao,
       the-FoX

    Treiber und mehr -- http://www.fox-box.com

    1. Hallo the-FoX,

      der Unterschied zwischen einfachem und doppeltem Hochkommata liegt in der Ausführungszeit.

      Ich habe das auch lange geglaubt. Ich wollte das nun einfach mal testen. Allerdings lässt sich kein merklicher Unterschied feststellen; ich gehe davon aus, dass die Unterschiede sowieso für das Starten des PHP-Interpreters 'draufgehen', der jedes Mal eine etwas andere Menge Zeit braucht. [1]

      Hier mal die Meßergebnisse: (jeweils 4 durchläufe und die Durschnittswerte genommen)

      <?php

      for ($i = 0; $i < 1000*1000; $i++) {
              $string = "blub!!!!!!!!!!!!!\n\n\n";
      }

      ?>

      Ergibt:

      real    0m1.798s
      user    0m1.800s
      sys     0m0.002s

      <?php

      for ($i = 0; $i < 1000*1000; $i++) {
              $string = 'blub!!!!!!!!!!!!!\n\n\n';
      }

      real    0m1.816s
      user    0m1.798s
      sys     0m0.002s

      (mir ist klar, dass im zweiten Beispiel \n nicht ersetzt wird, ich wollte nur die zu verarbeitenden Daten gleich halten)

      Falls jemand jetzt argumentiert, der Benchmark sei nicht akzeptabel, weil ja nur das gleiche Stück Code immer wieder ausgeführt wird: Ich habe mal versucht, ein Script zu schreiben, das eine Million PHP-Zeilen, die nur

      $string = "Hallo\n";

      bzw.

      $string = 'Hallo\n';

      lauten, schreibt. Beim Ausführen der erzeugten Datei musste ich erst mein Memory Limit hochschrauben, danach ist PHP mit einer "Segmentation Fault" abgestürzt. Ich musste die Anzahl an Zeilen auf 10000 reduzieren, damit PHP in diesem Fall überhaupt durchgelaufen ist. Da stellte ich dann auch keinen wirklichen Unterschied fest. Und wer mehr als 10000 Strings auf einmal in einem PHP-Script braucht, dürfte andere Performance-Bremsen als die Strings selbst haben.

      Ich habe den Benchmark mit der Schleife auch 10 Millionen mal durchgeführt und es war immernoch kein wirklicher Unterschied festzustellen.

      Achja, PHP-Version: 4.3.2, Debian GNU/Linux.

      Viele Grüße,
      Christian

      [1] Der PHP-Interpreter beim Verarbeiten einer leeren PHP-Datei schwankt bei mir in der Ausführungszeit zwischen minimal

      real    0m0.038s
      user    0m0.020s
      sys     0m0.000s

      und maximal

      real    0m0.042s
      user    0m0.040s
      sys     0m0.020s

      (wenn auf dem Rechner sonst keine Last herrscht) Damit ließen sich die Ausführungsdifferenzen erklären.

      1. Holladiewaldfee,

        Hier mal die Meßergebnisse: (jeweils 4 durchläufe und die Durschnittswerte genommen)

        <?php
        for ($i = 0; $i < 1000*1000; $i++) {
                $string = "blub!!!!!!!!!!!!!\n\n\n";
        }
        ?>

        Wenn Du schon dabei bist, magst Du vielleicht mal was in der Art

        <?php
        $variable = 'testtext';
        for($i=0; $i<1000*1000; $i++)
        { $string = "das ist ein $variable oder so"; } ?>

        vs.

        <?php
        $variable = 'testtext';
        for($i=0; $i<1000*1000; $i++)
        { $string = 'das ist ein '.$variable.' oder so'; } ?>

        testen? Wär mal interessant, und ich bin grad zu faul ;)

        Ciao,

        Harry

        --
          Intelligenz ist nicht zwingend etwas positives.
          Man weiß erst, was man hatte, wenn man es verloren hat.
        1. Hallo Harry,

          jeweils 3 Durchläufe, Durchschnittswert, _exakt_ Dein Code:

          <?php
          $variable = 'testtext';
          for($i=0; $i<1000*1000; $i++)
          { $string = "das ist ein $variable oder so"; } ?>

          real    0m8.567s
          user    0m8.547s
          sys     0m0.003s

          <?php
          $variable = 'testtext';
          for($i=0; $i<1000*1000; $i++)
          { $string = 'das ist ein '.$variable.' oder so'; } ?>

          real    0m2.695s
          user    0m2.683s
          sys     0m0.003s

          Weia. Das ist ja ein gehöriger Unterschied... Ich habe daraufhin nochmal den alten Code von mir getestet, da ich dachte, vielleicht hätte sich was an den Bedingungen geändert: doch Pustekuchen, der vorige Benchmark liefert immernoch dieselben Ergebnisse.

          Viele Grüße,
          Christian

          1. Holladiewaldfee,

            real    0m8.567s
            real    0m2.695s

            Oha ...

            Weia. Das ist ja ein gehöriger Unterschied... Ich habe daraufhin nochmal den alten Code von mir getestet, da ich dachte, vielleicht hätte sich was an den Bedingungen geändert: doch Pustekuchen, der vorige Benchmark liefert immernoch dieselben Ergebnisse.

            Das war nämlich genau das, was ich befürchtet habe: Daß der Unterschied erst zu Tage tritt, wenn man wirklich anfängt, Variablen im String zu verstecken.

            Die \ muß der Parser im String nämlich so oder so suchen, und sei es bei einfachen Hochkomma nur, um die ' zu entdecken. Ob er da bei den echten Anführungszeichen \n, \t etc. noch mitnimmt macht nicht sooo den Unterschied. Dann wird der Parser die doppelten Anführungszeichen wohl auf Vorkommen von $ untersuchen. Das nimmt bis dahin alles nicht so die Wahnsinnszeit in Anspruch, aber wenn er dann halt den komplette String analysieren muß um die Variablen zu entdecken ... das dauert.

            Danke Dir für den Test.

            Ciao,

            Harry

            --
              Intelligenz ist nicht zwingend etwas positives.
              Man weiß erst, was man hatte, wenn man es verloren hat.
            1. Hallo Harry,

              [...]

              Resumée: Es gibt keinen Unterschied zwischen "hallo" und 'hallo'. Aber '/'.$b.'/' ist bis zu dreimal _schneller_ als "/$b/". (bei anderen Kombinationen war es teilweise nur zweimal)

              Daher: Variablen in Strings mit doppelten Anführungszeichen möglichst vermeiden.

              Viele Grüße,
              Christian

              1. Hi Christian,

                Resumée: Es gibt keinen Unterschied zwischen "hallo" und 'hallo'. Aber '/'.$b.'/' ist bis zu dreimal _schneller_ als "/$b/". (bei anderen Kombinationen war es teilweise nur zweimal)
                Daher: Variablen in Strings mit doppelten Anführungszeichen möglichst vermeiden.

                welcher Grund bleibt dann überhaupt noch, "..."-Strings zu verwenden?

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                1. Hallo Michael,

                  welcher Grund bleibt dann überhaupt noch, "..."-Strings zu verwenden?

                  Wenn man Strings mit Steuerzeichen braucht. '\n' wird in PHP nicht zu einem Zeilenumbruch ersetzt; "\n" dagegen schon. Ansonsten gebe ich Dir Recht.

                  Viele Grüße,
                  Christian

  5. Hi,

    solange Du mit Programmanweisungen arbeitest, haben die anderen ja schon den Unterschied zwischen " (interpretierbar) und ' (konstant) dargestellt. In deinem Beispiel hattest Du aber HTML-Output (border="0") aufgeführt. Hier solltest Du Dir tatsächlich immer die Mühe machen " bzw. " zu nutzen und zwar nicht nur weil das W3C dies sagt, sondern auch, weil Robots von Suchmaschinen etc. dies evtl. so erwarten, wenn sie aus Deinen Seiten Links, ... was auch immer extrahieren.

    Stephan
    http://www.w3solutions.de

    1. Moin!

      solange Du mit Programmanweisungen arbeitest, haben die anderen ja schon den Unterschied zwischen " (interpretierbar) und ' (konstant) dargestellt. In deinem Beispiel hattest Du aber HTML-Output (border="0") aufgeführt. Hier solltest Du Dir tatsächlich immer die Mühe machen " bzw. " zu nutzen und zwar nicht nur weil das W3C dies sagt, sondern auch, weil Robots von Suchmaschinen etc. dies evtl. so erwarten, wenn sie aus Deinen Seiten Links, ... was auch immer extrahieren.

      Nein. Das W3C sagt davon nichts.

      Der Standard fordert, dass Attributwerte, die nicht rein aus Zahlen oder aus Buchstaben bestehen, in Anführungszeichen eingeschlossen werden sollen. Dazu stehen beide Methoden " und ' zur Verfügung, sind auch beide valide und funktionieren bestens.

      Ich glaube auch kaum, dass sich Suchmaschinenparser leisten könnten, hier strenger als der HTML-Standard zu sein.

      - Sven Rautenberg

      --
      SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
  6. Hallo björn,

    also, ich benutze in PHP meist '...', und zwar _wegen_ der Umständlichen Variante 'string'.$variable.'string'
    einfacher Grund: so zeichnet mein Editor die Variablen nämlich gewohnt PHP-mäßig aus. Dann kann ich sie besser finden. Bei "string $variable string" sucht man sich doch'n Wolf.

    Gruß, Andreas