我有以下代码:
<input type="text" value="<?php echo $_GET['msg']; ?>">
此输入将自动填充上一页中写入的名称。 所以,如果用户写道:我喜欢“苹果”和香蕉 输入将被破坏,因为它将在双引号后关闭标记。 我知道我可以通过html来吸引价值来避免这种情况,但我不想要这个,是否有其他解决方案或是否有&lt;&lt;&lt;在HTML中的EOD?
谢谢
答案 0 :(得分:2)
您应该使用 htmlspecialchars
函数来转义HTML的输出:
<input type="text" value="<?php echo htmlspecialchars($_GET['msg']); ?>">
注意:如果您没有使用ISO-8859-1
作为字符集,则可能需要添加一些额外的参数;例如,使用UTF-8:
<input type="text" value="<?php echo htmlspecialchars($_GET['msg'], ENT_COMPAT, 'UTF-8'); ?>">
答案 1 :(得分:2)
htmlentities() / htmlspecialchars()是此标准方式。你应该使用它。
您可以在通过电子邮件发送实体之前解码实体,或使用html_entity_decode()对实体执行其他操作。
答案 2 :(得分:1)
一种或另一种功能会造成某种麻烦。
我想出了以下内容以保持&符号:
<input type="text" value="<?php echo parseString($_GET['msg']); ?>">
<?php
function parseString($str) {
$result=str_replace('"','"',$str);
$result=str_replace("'","'",$result);
return $result;
}