替换& for&

时间:2011-07-07 20:31:27

标签: php validation

我正在尝试使用W3C验证系统验证,我收到错误:

  

第59行,第47栏:字符“&”是分隔符的第一个字符,但是作为数据出现

我知道原因:

  

你使用了未转义的&符号“&”:这在某些情况下可能有效,但建议使用“& amp”,这总是安全的。

在表单中,我已按此输入

  

SONY& BMG MUSIC ENTERTAINMENT

如果我进入phpadmin,在表格中,我可以正确查看数据

  

SONY& BMG MUSIC ENTERTAINMENT

这是否意味着我必须使用“& amp”进入它...这很疯狂,如果我有一个文本...我必须更换每个&为“& amp”

我确信有更好的方法可以做到这一点......有任何提示或想法吗?

由于

1 个答案:

答案 0 :(得分:3)

当您在HTML上下文中使用HTML时,您应该只转义HTML数据。

输出数据时使用htmlspecialchars()。例如:

$title="SONY & BMG MUSIC ENTERTAINMENT";
echo htmlspecialchars($title);

最佳做法是将数据保留在数据库中,因为您可能希望将来在完全不同的上下文中使用它。也就是说,在插入数据库之前不要转义数据。输出时只担心它。