Fehler: unexpected '' (T_ENCAPSED_AND_WHITESPACE)

Ich sehe irgendwie den Wald vor Bäumen nicht

Ganz simpel:


<?
 $content = "if($_IPS['VALUE'] == true)".PHP_EOL; 
?>

$content besteht insgesamt aus mehr Zeilen, den Fehler wirft er mir aber nur bei dieser Zeile. Letztendlich soll dann $content am Schluss in ein Skript geschrieben werden.

Erzeugt mir diesen Fehler:


Parse error:  syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /var/lib/symcon/scripts/46046.ips.php on line 2
Abort Processing during Fatal-Error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
   Error in Script /var/lib/symcon/scripts/46046.ips.php on Line 2

Wahrscheinlich irgendwas banales aber ich finde den Fehler nicht. Kann mir jemand sagen was da falsch ist?

Ich weiß es zwar auch nicht - aber mit einfachen Anführungszeichen (Hochkommata), reduzieren sich zumindest die Fehler :wink:

LG Tom

So bekommst du die Hochkommas nicht in eine Variable, die müssten vermutlich maskiert werden mit einem , kann ich auf dem Tablet nicht testen.

Vielen Dank für den Hinweis. Ich würde das nur gerne verstehen um nicht den gleichen Fehler noch mal zu machen aber fürs erste ist ja ok wenn der Fehler nicht auftaucht.

Bei


<?
 $content = "if($_IPS[\"VALUE\"] == true)".PHP_EOL; 
?>

Kommt bei mir auch


Parse error:  syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /var/lib/symcon/scripts/46046.ips.php on line 2
Abort Processing during Fatal-Error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
   Error in Script /var/lib/symcon/scripts/46046.ips.php on Line 2

So kommt bei mir kein Fehler:


<?
 $content = 'if($_IPS["VALUE"] == true)'.PHP_EOL; 
?>

PHP Basics:
PHP: Strings - Manual

Michael

Davon ging ich fast aus.

Kannst Du ein für alle mal an dem Beispiel oben beschreiben wie da eine 100% richtige Syntax aussehen müsste. Ich verspreche ich werde dann auch nie mehr bei solchen banalen Dingen fragen ;).

Das Problem entstand durch $_IPS, was eine Kennzeichnung für eine Variable ist.
In doppelten Anführungszeichen werden Variablen vor Ausführung interpretiert, in einfachen nicht.
Wenn man nicht möchte, das die Variablen in doppelten Ausführungszeichen ausgewertet werden, muss man neben den evtl. vorhandenen weiteren doppelten Anführungszeichen im inneren auch das ‚$‘ maskieren, also z.B.
Dein erstes Beispiel in #3 wäre so richtig, das zweite mit den einfachen Anführungszeichen war es schon.

<? 
 $content = "if(\$_IPS[\"VALUE\"] == true)".PHP_EOL;  
#oder
$content = "if(\$_IPS['VALUE'] == true)".PHP_EOL;  
?>

Tommi

Danke werde ich mir ein für allemal merken.

Oder einfach einfache Anführungszeichen nutzen. :wink:
Michael