给出以下两个html / php片段:
<input type="text" name="firstname" value="<?php echo $_POST['firstname']; ?>" />
和
<textarea name="content"><?php echo $_POST['content']; ?></textarea>
我需要为回显的$_POST
变量使用什么字符编码?我可以使用任何内置的PHP函数吗?请假设尚未对$_POST
值进行编码。没有任何神奇的引用。
答案 0 :(得分:91)
使用htmlspecialchars($_POST['firstname'])
和htmlspecialchars($_POST['content'])
。
在向用户展示字符串之前,始终使用htmlspecialchars()
转义字符串。
答案 1 :(得分:4)
htmlspecialchars可以在两种情况下都有效。查看不同的标志选项,以避免引号在input
情况下出现问题。
答案 2 :(得分:1)
考虑到我要把它放在一个函数中
<?PHP
function encodeValue ($s) {
return htmlentities($s, ENT_COMPAT|ENT_QUOTES,'ISO-8859-1', true);
}
?>
这具有 ENT_QUOTES 以确保对单引号和双引号进行了编码,但也可以编码特殊字符(类似于José),而不是插入空字符串。 / p>
那么您可以做:
<input type="text" name="firstname" value="<?= encodeValue($_POST['firstname']) ?>" />
和
<textarea name="content"><?= encodeValue($_POST['content']) ?></textarea>
答案 3 :(得分:-2)
我经常使用
<input type="text" name="firstname" value=<?php echo json_encode($_POST['firstname']); ?>/>