Php获取请求特殊性<标志?

时间:2013-01-08 11:18:37

标签: php get

$in = $_GET['in'];
print $in;

当我输入?in=<<<时,它会打印出<<<。但是当你执行?in=<<<A时,它只会打印<<<A部分。这种特殊性的解释是什么?我知道<<T_LS<<<T_START_HEREDOC,但不知何故我不明白<A是如何失踪的。

编辑:抱歉,我暂时感到困惑。我的困惑来自于当我像

那样评估代码时
eval("\$out = $in");

并输入?in=<<<A\nout\nA;\n我收到了T_LS语法错误。

对不起我的轻率问题。 Mod可以删除或关闭此帖子。

2 个答案:

答案 0 :(得分:2)

浏览器会将<A解释为开头HTML标记,因此不会在页面上显示,但它仍然存在于源代码中。

与heredoc或任何其他PHP语法无关,因为PHP将其打印为字符串,而不是执行它。

答案 1 :(得分:1)

就像I have edited your question一样。 <<<A<<并且是锚标记<A的开头。因此在输出中你不会将其视为它会创建格式错误的HTML 。您应该使用htmlentities()功能

$data = "<<<A";
echo htmlentities($data);