Doppelte oder einfache Hochkomma verwenden ?
björn
- programmiertechnik
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
Hallo!
man kann ja verschiedene echo-"varianten" benutzen:
a) echo('border="0" '.$variable.' text ');
b) echo("border="0" $variable text ");
grüsse sebastian
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
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
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.
Sometimes speed is important ;-) be fast, be faster...
Ciao,
the-FoX
Treiber und mehr -- http://www.fox-box.com
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.
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
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
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
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
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
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
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
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
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