{"id":55,"date":"2008-05-15T16:45:09","date_gmt":"2008-05-15T15:45:09","guid":{"rendered":"http:\/\/blog.till.de\/?p=55"},"modified":"2009-05-23T16:18:37","modified_gmt":"2009-05-23T15:18:37","slug":"zeichenketten","status":"publish","type":"post","link":"https:\/\/blog.till.de\/allgemein\/zeichenketten\/","title":{"rendered":"Zeichenketten"},"content":{"rendered":"

Zeichenketten (strings) lassen sich in PHP bekanntermaßen sowohl in einfachen (‚) als auch doppelten („) Hochkommata einschließen. Aber wissen Sie auch, dass es dabei Unterschiede gibt, welche es sind und wann Sie welche Version am besten einsetzen? Wenn nicht, finden Sie in diesem Beitrag die fehlenden Antworten.<\/p>\n

Der Unterschied zwischen Zeichenketten mit einfachen und doppelten Anf\u00fchrungszeichen ist der, dass solche in doppelten Anf\u00fchrungszeichen von PHP w\u00e4hrend der Ausf\u00fchrung „geparsed“ – also Zeichen f\u00fcr Zeichen durchgegangen und bearbeitet – werden. Damit ist es m\u00f6glich Sonderzeichen wie Zeilenumbr\u00fcche oder Tabualatoren oder sogar Variablen in der Zeichenkette einzutragen, die dann entsprechend ersetzt werden.<\/p>\n


\n$user = \"Welt\";
\nprint \"Hallo, $user!\\nWie geht es dir?\";
\n<\/code><\/p>\n

W\u00fcrde folgendes ausgeben: Hallo, Welt!
\nWie geht es dir?<\/em><\/p>\n

Bei einfachen Anf\u00fchrungszeichen wird die Zeichenkette im Grunde genommen genau so ausgegeben, wie sie eingegeben wurde (abgesehen von den beiden Zeichenkombinationen \\‘ und \\\\).<\/p>\n


\n$user = \"Welt\";
\nprint 'Hallo, $user!\\nWie geht es dir?';
\n<\/code><\/p>\n

Erzeugt somit folgende Ausgabe: Hallo, $user!\\nWie geht es dir?<\/em><\/p>\n

Weshalb sollte man also nicht gleich alles in doppelte Anf\u00fchrungszeichen setzen? Wieso gibt es \u00fcberhaupt die „einfache“ Version? Die Antwort ergibt sich aus dem eingangs erw\u00e4hnten parsen: Jedes Mal wenn die Zeichenkette aufgerufen wird wird Sie bearbeitet. Ganz egal, ob es etwas zu ersetzen gibt oder nicht. Da das ganze sehr schnell geht ist der Unterschied zu dem selben Text in einfachen Anf\u00fchrungszeichen von der Laufzeit her minimal. Wenn wir uns jetzt aber mal vorstellen, dass wir eine umfangreiche Anwendung mit vielen solchen Texte haben, die vielleicht auch noch auf einem gut besuchten Webserver l\u00e4uft und somit entsprechend oft ausgef\u00fchrt wird, kann das in Summe schnell meß- oder sogar f\u00fchlbare Unterschiede erzeugen.
\nWenn also sowieso schon klar ist, dass an einem Text nichts ersetzt werden muss, sollten immer<\/em> einfache Anf\u00fchrungszeichen verwendet werden.<\/p>\n


\n$Welt = 'Erde';
\n$Weltraum = 'Universum';
\n$Weltraumschiff = 'Space Shuttle';<\/code><\/p>\n

print „Wir fliegen im $Weltraumschiff von der $Welt zum Mars oder gar bis zum Rande des $Weltraums.“;<\/p>\n

In diesem Beispiel muss an den Inhalten der drei Variablen nichts ersetzt werden, also kommen Sie in einfache Anf\u00fchrungszeichen und nur f\u00fcr die Ausgabe werden doppelte verwendet, damit die entsprechenden Stellen durch den Inhalt der Variablen ersetzt werden. Doch was wird hier ausgegeben? Wer glaubt es ist Wir fliegen im Space Shuttle zum Mars oder machen eine Flug von der Erde bis zum Rande des Universums.<\/em>, der irrt.<\/p>\n

Die eigentliche Ausgabe lautet Wir fliegen im Space Shuttle zum Mars oder machen eine Flug von der Erde bis zum Rande des .<\/em> Denn alles was nach dem Dollar-Zeichen kommt und ein g\u00fcltiges Zeichen f\u00fcr einen Variablennamen ist wird als zu der Variablen geh\u00f6rig interpretiert. Sonst k\u00f6nnte ja $Weltraumschiff<\/code> auch als Erderaumschiff<\/em> oder Universumschiff<\/em> ausgegeben werden. Zwar kann man mit geschweiften Klammern den gew\u00fcnschten Effekt erzielen (... \"Rande des ${Weltraum}s.\"<\/code>), aus Gr\u00fcnden der Übersichtlichkeit und Eindeutigkeit ist aber immer zu empfehlen Variablen nie direkt in Zeichenketten zu verwenden und nur den Teil der wirklich Sonderzeichen enth\u00e4lt in doppelte Anf\u00fchrungszeichen zu setzen. F\u00fcr unsere beiden Beispiel bedeutet das<\/p>\n


\n$user = 'Welt';
\n\/*
\nhier brauchen wir die doppelten Anf\u00fchrungszeichen um den Zeilenumbruch zu erzwingen
\n*\/
\nprint 'Hallo, ' . $user . '!' . \"\\n\" . 'Wie geht es dir?';<\/code><\/p>\n

$Welt = ‚Erde‘;
\n$Weltraum = ‚Universum‘;
\n$Weltraumschiff = ‚Space Shuttle‘;<\/p>\n

print ‚Wir fliegen im ‚ . $Weltraumschiff . ‚ von der ‚ . $Welt . ‚ zum Mars oder gar bis zum Rande des ‚ . $Weltraum . ’s.‘;<\/p>\n

Das Ausrufezeichen auch noch auszulagern macht aus Laufzeit-Sicht wahrscheinlich keinen Unterschied, allerdings ist dadurch gesichert, dass in den doppelten Anf\u00fchrungszeichen wirklich nur zu ersetzende Zeichen stehen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zeichenketten (strings) lassen sich in PHP bekanntermaßen sowohl in einfachen (‚) als auch doppelten („) Hochkommata einschließen. Aber wissen Sie auch, dass es dabei Unterschiede gibt, welche es sind und wann Sie welche Version am besten einsetzen? Wenn nicht, finden Sie in diesem Beitrag die fehlenden Antworten.<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[],"tags":[63],"_links":{"self":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/55"}],"collection":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":0,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}