PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Ausgaben ordentlich realisieren (http://www.selfphp.de/forum/showthread.php?t=10846)

c4 24.06.2005 11:15:04

Ausgaben ordentlich realisieren
 
Wann " und wann '?
Es ist leider eine übliche Unart alles so auszugeben:
PHP-Code:

echo "Ewig langer Text ohne Variablen."

Das funktioniert, ist aber nicht die beste Lösung.
Besser ist das:
PHP-Code:

echo 'Ewig langer Text ohne Variablen.'

Und warum? Weil - wie eigentlich überall nachzulesen ist - PHP in Strings, die in " stehen nach Variablen sucht. Das kann je nach Textlänge dauern. Nicht, dass man sich einen Kaffee holen könnte, aber bei einigen Tausend Besuchern und vielen Texten dieser Art macht es sich schlicht besser, wenn man dem PHP-Parser diese Arbeit erspart.
Ausreden, wie "die Datenbank holt die gesparte Zeit locker wieder rein" zählen nicht!

Noch ein paar Beispiele:
PHP-Code:

$var='Auto';
// Ausgabe: Ich habe ein Auto.
echo "Ich habe ein $var.";

// Ausgabe: Ich habe ein $var.
echo 'Ich habe ein $var.'

Will man nun Zeilenumbrüche machen (richtige, im Quelltext sichtbare (\r, \n und \r\n), nicht diese <br>s und so), dann muss man diese in " setzen. Jetzt ist es hauptsächlich eine Frage des persönliches Geschmacks und natürlich der Länge des Textes wie man vorgeht.
Mögliche Varianten:
PHP-Code:

echo 'Ewig langer Text.'."\n";
echo 
'Ewig langer Text.'; echo "\n";
echo 
"Nicht ganz so ewig langer Text.\n"

Stellt sich die Frage, ab wann ein Text ein 'ewig langer' Text ist. Ich habe keine Ahnung! Ich würde aber einfach mal die Zahl 1.000 als Grenze abstempeln, ab der man sich doch für erstere Variante entscheiden sollte.
Ob die zweite oder die dritte Variante schneller ist wäre einen Versuch wert. Auch hier gilt: keine Ahnung!


Wie " oder ' ausgeben?
Manchmal muss man innerhalb eines Strings ein " oder ' ausgeben, zum Beispiel wenn JavaScript inbegriffen ist.
Mögliche Varianten sind:
PHP-Code:

echo "<a href='#' onclick='alert(\"\");'>Klick mich!</a>";
echo 
"<a href='#' onclick=\"alert('');\">Klick mich!</a>";
echo 
'<a href=\'#\' onclick=\'alert("");\'>Klick mich!</a>';
echo 
'<a href="#" onclick="alert(\'\');">Klick mich!</a>'

Lässt man die Backslashes weg, dann schimpft PHP. Zu Recht!


Inhalt eines Arrays ausgeben?
Man kann die folgenden Beispiele getrost überlesen, wenn man es so macht:
PHP-Code:

echo 'Hallo, ich bin: '.$arr[12]['name']; 

Manch einer mag's aber nicht oder der Code sieht damit schlicht Scheiße aus. Dann klammert (sicher nicht der richtige Ausdruck dafür) man es aus.

Beispiel $arr[12]='Carsten':
PHP-Code:

echo "Hallo, ich bin: {$arr[12]}";
echo 
"Hallo, ich bin: $arr[12]";
$zahl=12;
echo 
"Hallo, ich bin: {$arr[$zahl]}";
echo 
"Hallo, ich bin: $arr[$zahl]"

Beispiel $arr[12][1]='Carsten':
PHP-Code:

echo "Hallo, ich bin: {$arr[12][1]}";
$zahl=12;
echo 
"Hallo, ich bin: {$arr[$zahl][1]}"

Beispiel $arr[12]['name']='Carsten':
PHP-Code:

echo "Hallo, ich bin: {$arr[12]['name']}";
$zahl=12;
echo 
"Hallo, ich bin: {$arr[$zahl]['name']}";
$feld='name';
echo 
"Hallo, ich bin: {$arr[12][$feld]}";
echo 
"Hallo, ich bin: {$arr[$zahl][$feld]}"

Das sollten alle richtigen Varianten sein. Falsche will ich gar nicht erst veröffentlichen, soll sich ja keiner merken...

Die geschweiften Klammern tragen dazu bei, dass PHP weiß, was alles zu einer Variable gehört. Lässt man sie weg sollte kein Fehler auftreten, aber die Ausgabe entspricht dann nicht mehr den Erwartungen.
Also immer, wenn Werte aus mehrdimensional verschachtelte Arrays oder assoziative Arrays ($arr['name'] ist eines) ausgegeben werden sollen, dann geschweifte Klammern darum setzen!

Warum hier nur mit " und nicht mit ' gearbeitet wurde? Oben anfangen zu lesen!


So, ich hoffe die Welt damit zu einem besseren und sicheren Ort gemacht zu haben. :)

dachris 24.06.2005 14:01:43

AW: Ausgaben ordentlich realisieren
 
Bild würde sagen....

Er hat recht :-)

zum Teil :-)

http://de2.php.net/manual/de/languag....string.substr

c4 29.06.2005 14:23:21

AW: Ausgaben ordentlich realisieren
 
Stimmt, diesen Einsatzzweck hatte ich vergessen. Da er aber eh nicht empfohlen wird, sei mir das verziehen. :)
Aber gut, dass der Link hier steht!


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:37:53 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.