双引号和输入问题

时间:2010-04-01 20:07:31

标签: php html

我有以下代码:

 <input type="text" value="<?php echo $_GET['msg']; ?>">

此输入将自动填充上一页中写入的名称。 所以,如果用户写道:我喜欢“苹果”和香蕉 输入将被破坏,因为它将在双引号后关闭标记。 我知道我可以通过html来吸引价值来避免这种情况,但我不想要这个,是否有其他解决方案或是否有&lt;&lt;&lt;在HTML中的EOD?

谢谢

3 个答案:

答案 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('"','&quot;',$str);
    $result=str_replace("'","&#39;",$result);
    return $result;
}