我有一个用户可以编辑的文本区域。编辑后,我将文本保存在PHP变量$ bio中。当我想显示它时,我这样做:
<?php
$bio = nl2br($bio);
echo $bio;
?>
但是,如果用户例如键入一个HTML命令,例如&#34; strong&#34;在他们的文本中,我的网站实际上会将文本输出为粗体。这不是我想要的。
如何在屏幕上打印/回显$ bio,就像文本而不是HTML代码一样?
提前致谢!
答案 0 :(得分:4)
将echo $bio;
替换为echo htmlspecialchars($bio);
答案 1 :(得分:0)
当您将文本输出到html /浏览器并且您想确保输出不会破坏html时,您应该始终使用htmlspecialchars()
。
在您的情况下,您确实希望显示<br>
代码,因此您应该在添加之前执行此操作:
$bio = nl2br(htmlspecialchars($bio));
您也可以使用strip_tags()
完全删除html标记,但您仍然需要使用htmlspecialchars()
,以便例如<
字符不会破坏您的html。
答案 2 :(得分:0)
您也可以使用htmlentites()
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<form method="POST" action="">
<p><textarea rows="8" name="bio" cols="40"></textarea></p>
<p><input type="submit" value="Submit"></p>
</form>
<p>Result:</p>
<?php echo isset($_POST['bio']) ? htmlentities($_POST['bio']) : null; ?>
</body>
</html>
所以喜欢: