$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可以删除或关闭此帖子。
答案 0 :(得分:2)
浏览器会将<A
解释为开头HTML标记,因此不会在页面上显示,但它仍然存在于源代码中。
与heredoc或任何其他PHP语法无关,因为PHP将其打印为字符串,而不是执行它。
答案 1 :(得分:1)
就像I have edited your question一样。 <<<A
是<<
并且是锚标记<A
的开头。因此在输出中你不会将其视为它会创建格式错误的HTML 。您应该使用htmlentities()功能
$data = "<<<A";
echo htmlentities($data);