如何在textarea中停止HTML文本以解释为代码

时间:2014-05-29 21:14:55

标签: php html textarea

我有一个用户可以编辑的文本区域。编辑后,我将文本保存在PHP变量$ bio中。当我想显示它时,我这样做:

    <?php 
    $bio = nl2br($bio);
    echo $bio;
    ?>

但是,如果用户例如键入一个HTML命令,例如&#34; strong&#34;在他们的文本中,我的网站实际上会将文本输出为粗体。这不是我想要的。

如何在屏幕上打印/回显$ bio,就像文本而不是HTML代码一样?

提前致谢!

3 个答案:

答案 0 :(得分:4)

echo $bio;替换为echo htmlspecialchars($bio);

http://php.net/htmlspecialchars

答案 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>

所以喜欢:

example