我试图使用php创建一些动态内容,所以我将html代码回显到我的网页中。但是,当我尝试在表单内的操作标记内插入<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
时,可能会由于某种解析错误而在页面上打印出不需要的可见文本。
我的例子如下。
echo'<form name="PArtifact" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input name="printArtifactBut" type="submit" value="Print Artifact">
</form>';
上面的代码将生成&#34;&gt;作为可见文本。有人能告诉我在回声中回应htmlspecialchars($_SERVER["PHP_SELF"])
的正确方法吗?
答案 0 :(得分:4)
您已经打开了PHP,并且您已经在回声表达式中。您只需要concatenate数据:
echo '<form name="PArtifact" method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '"></form>';
但正如我在评论中所说,这是不必要的,因为默认情况下表单操作已经是这个。
实现你的意思的其他方式是退出php部分:
?>
<form name="PArtifact" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input name="printArtifactBut" type="submit" value="Print Artifact">
</form>
<?php
答案 1 :(得分:1)
您的问题归结为对PHP如何工作的基本误解。在回声中完全没有回声;这个概念是一个非常规的概念。如果需要在echo中调用函数,只需关闭正在回显的字符串,使用点将函数调用附加到字符串。然后是另一个点,再用另一个引号打开字符串,继续你离开的地方。
echo'<form name="PArtifact" method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
<input name="printArtifactBut" type="submit" value="Print Artifact">
</form>';
然而在这种情况下,正如其他人已经说过的那样,你甚至不需要这样做,因为在PHP_SELF
属性中使用action
是多余的 - 这就是无论如何,action
的默认值。因此,对于这种情况,您可以简单地将其全部删掉:
echo'<form name="PArtifact" method="post" action="">
<input name="printArtifactBut" type="submit" value="Print Artifact">
</form>';
......无论如何,你将获得与你想要的完全相同的效果。