无法正确获得双引号

时间:2013-08-28 13:42:48

标签: php

我有以下工作正常:

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);

但它们似乎无法正常工作。底部的一个在我的编辑器中给出了语法错误。而倒数第二个例子根本没有重定向。

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

您还可以使用解析字符串的优势来代替:

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

如果你需要来加入字符串,你应该使用单引号,因为它们更快(它们没有被解析或者其他东西),如下所示:$foo='World'; echo 'Hello\n'.$foo;。如果您不希望将\ n转换为$foo='World'; echo "Hello\n$foo";将解析它的转义字符,这也很好。 (完全偏离主题,但我猜有帮助)