2013-08-28 65 views
1

我有正常工作的情況如下:無法獲得雙引號右

header("Location: /index.php", true, 300); 

,但我想要的文件名是動態的,即

header("Location: /" . $_SESSION['initiating_url']); 

這工作得很好,不過,我仍需要, true, 300末,我似乎無法弄清楚:

header("Location: /" . $_SESSION['initiating_url'] . "\"", true, 300); 
header("Location: /" . $_SESSION['initiating_url'] . """, true, 300); 

,但他們似乎只是不能正常工作。最下面的那個給我編輯器中的語法錯誤。而倒數第二個例子根本不重定向。

回答

7

你並不需要添加一個明確的關閉"concatenating strings

header("Location: /" . $_SESSION['initiating_url'], true, 300); 

爲清楚:

$path = 'home'; 
echo "Location: /" . $path;   // Location: /home 
echo "Location: /home";    // Location: /home 
echo "Location: /" . $path . "\""; // Location: /home" 
echo "\"Location: /" . $path . "\""; // "Location: /home" 
+0

雖然我不明白你說的明確和暗示,你的回答是正確的。 :) –

+0

@ nl-x,OP認爲他們需要明確引用一個字符串,即「」字符串「'。但使用字符串連接時,*結束引號*不是必需的。 –

1

你也可以使用具有解析做字符串的優勢取而代之的是:

header("Location: /{$_SESSION['initiating_url']}", true, 300); 

如果你有需要來加入字符串,你應該使用單引號,因爲它們有點快(它們不會被解析或者其他東西),像這樣:$foo='World'; echo 'Hello\n'.$foo;。如果您不希望將\ n轉換爲$foo='World'; echo "Hello\n$foo";將解析它的轉義字符,那也不錯。 (完全脫離主題,但我很有幫助)

+0

是的!太多人似乎認爲連接是在文本內部有變量的唯一方法。字符串解析使文本更容易閱讀,無論如何大多數情況下。 – Technoh