PHP klammern in variable

Dabei seit
Mai 2016
Beiträge
876
#1
hallo, habe hier diese zeile :

Code:
$_SESSION['link']="[url=$filename][img]$file[/img][/url]";
doch irgendwie macht das Probleme :

Code:
PHP Syntax Check: Parse error: syntax error, unexpected '/', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in your code on line 1

doch wie muss das richtig heißen ? in ' anstatt " kommt kein fehler aber dann stehen da ja die variablen einfach so und nicht deren inhalt :/
 
Dabei seit
März 2007
Beiträge
4.834
#2
$_SESSION['link']="
 

Sarius87

Banned
Ersteller dieses Themas
Dabei seit
Mai 2016
Beiträge
876
#3
geht auch nicht...

Code:
PHP Syntax Check: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in your code on line 1
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.554
#4
PHP interpretiert die eckigen Klammern als Array-Klammern, versucht also, auf "$file[/img]" zuzugreifen, und das geht schief, weil /img kein gültiger Array-Index ist.

Versuch mal, die Namen der Variablen in geschweifte Klammern einzufassen, also "${file}[/img]", dann sollte es gehen.
 
M

mw197

Gast
#5
Oder einfach direkt so schreiben.

PHP:
$_SESSION['link'] = '[url='.$filename.'][img]'.$file.'[/img][/url]';
 
Dabei seit
Sep. 2013
Beiträge
4.618
#6
Bei " versucht PHP den Inhalt zu interpretieren, bei ' nicht

​(War da nicht so etwas in der Art?)
 
M

mw197

Gast
#7
Bei " versucht PHP den Inhalt zu interpretieren, bei ' nicht

​(War da nicht so etwas in der Art?)
​Ja, so kann man das sagen. Bei String mit " wird gleichzeitig auch übersetzt. Also wenn da Variablen drin stehen, versucht er diese aufzulösen und halt zu verarbeiten. Dadurch ist das System natürlich damit auch langsamer.
​Macht man es wie in meinem Post mit ' spuckt PHP quasi einfach nur aus ohne vorhandene Variablen zu übersetzen und man muss dann ggf. verketten.
 
Dabei seit
März 2007
Beiträge
4.834
#8
Was mir immer hilft:
PHP:
echo "Dies ist ein Text mit einer Nachricht: {$nachricht}";
Die geschweiften Klammern sind hier zwar sinnlos, helfen aber in anderen Situationen:

Z. B.: Arrays:
PHP:
echo "Dies ist ein Text mit einer Nachricht: {$nachricht["msg"]} ({$nachricht["nr"]})";
Z. B.: Objekte:
PHP:
echo "Dies ist ein Text mit einer Nachricht: {$ex->getMessage()} ({$ex->getCode()})";
Z. B.: "Dynamische" Variablen (Beispiel SimpleXML):
PHP:
echo $movies->movie->{'great-lines'}->line;
Edit: Zu deiner Frage was es mit den ' und " auf sich hat:
Strings allgemein: http://php.net/manual/en/language.types.string.php
Einfache Hochkommas: http://php.net/manual/en/language.types.string.php#language.types.string.syntax.single
Gänsefüßchen: http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double
 
Zuletzt bearbeitet: (Doku zu Strings)
Top