0

当我运行以下脚本时,没有打印任何内容。为什么会这样?

<?php
  $var = "<?php echo 'Hey !'; ?>";
  echo $var;
?>
4

5 回答 5

1

它回显“nothing”,因为您的浏览器不理解<?php标签,因此它不会显示标签内容;当您选择查看页面源时,它应该会显示一些内容。

这种行为的原因是您的脚本的默认内容类型设置为text/html(您可以通过查看响应标头来确认这一点)并且在 HTML 的上下文中,您应该使用htmlspecialchars()

echo htmlspecialchars($var);

事实上,作为一般规则,您应该始终在输出变量时适当地对其进行转义。

或者,您可以让浏览器知道您的输出不应被解释为 HTML;您可以通过设置适当的响应标头来做到这一点:

header('Content-Type: text/plain');

使用上述内容类型,您的输出将由浏览器逐字显示。

于 2013-10-22T04:59:25.430 回答
0

改变这个

$var = "<?php echo 'Hey !'; ?>";

进入这个

$var = "&lt;?php echo 'Hey !'; ?&gt;";
于 2013-10-22T04:59:16.007 回答
0

因为您的语法对于 php 引擎来说是错误的...更改为:

<?php
  $var = "<?php echo 'Hey !'; ?>";
  echo $var;
?>

<?php
  $var = 'Hey !';
  echo $var;
?>
于 2013-10-22T04:59:37.383 回答
0

将内容类型设置为text,您可以在浏览器中看到您的输出。

<?php
  header('Content-type: text/plain');
  $var = "<?php echo 'Hey !'; ?>";
  echo $var;
?>

这是因为您的浏览器需要 html 并且它不理解您在输出中的 php 标签。

其他明智的使用htmlspecialchars函数将是一个更好的选择。

于 2013-10-22T05:01:51.040 回答
0

尝试这样的事情

$var = '<?php echo \'Hey !\';?>';
echo htmlspecialchars($var);
于 2013-10-22T05:03:27.403 回答