2011-02-05 12 views
1

私は失敗し続けるコードを持っています。このPHPコードで何が問題になっていますか?

if (isset($_GET ['id']) && $rawdata) { 
     if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) { 
     header("Location: http://".$_SERVER['SERVER_NAME'].".$rawdata['htmltitle']."); 
     } 
    } 

失敗した行は、その中のヘッダを有するものである、として失敗します。

PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING 

間違って何上の任意のアイデア?

答えて

4

あなたは文字列内の配列にインデックス付けしている場合は、{}を使用する必要があります。

header("Location: http://${_SERVER['SERVER_NAME']}${rawdata['htmltitle']}"); 
+0

がの間違った側に、あなたの$ではないです動作するはず配列インデックスと文字列と表現

をラップする{braces}を使用する必要があります。 {? –

+0

@ Jaredこれはいずれの方法でも動作します –

+0

これまではこの方法は見たことがありませんでしたが、試してみましたが正しいです。ありがとう。 –

4

あなたが書く必要があります:

header("Location: http://$_SERVER[SERVER_NAME]$rawdata[htmltitle]"); 

または:

header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}"); 

Or:

header('Location: http://' . $_SERVER['SERVER_NAME'] . $rawdata['htmltitle']); 

文字列内の配列オフセットアクセスで文字列(T_CONSTANT_ENCAPSED_STRING)を使用することはできません。T_STRINGを使用する必要があります。

+0

いつものように、私はdownvoteの説明を感謝します。それについて何か正しいものがないなら、教えてください。 – NikiC

1

http://php.net/manual/en/language.types.string.php PHPは文字列内の変数補間を超えるwhinyです:あなたはこれが

if (isset($_GET ['id']) && $rawdata) { 
    if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) { 
    header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}"); 
    } 
} 
関連する問題