我正在尝试使用W3C验证系统验证,我收到错误:
第59行,第47栏:字符“&”是分隔符的第一个字符,但是作为数据出现
我知道原因:
你使用了未转义的&符号“&”:这在某些情况下可能有效,但建议使用“& amp”,这总是安全的。
在表单中,我已按此输入
SONY& BMG MUSIC ENTERTAINMENT
如果我进入phpadmin,在表格中,我可以正确查看数据
SONY& BMG MUSIC ENTERTAINMENT
这是否意味着我必须使用“& amp”进入它...这很疯狂,如果我有一个文本...我必须更换每个&为“& amp”
我确信有更好的方法可以做到这一点......有任何提示或想法吗?
由于
答案 0 :(得分:3)
当您在HTML上下文中使用HTML时,您应该只转义HTML数据。
输出数据时使用htmlspecialchars()
。例如:
$title="SONY & BMG MUSIC ENTERTAINMENT";
echo htmlspecialchars($title);
最佳做法是将数据保留在数据库中,因为您可能希望将来在完全不同的上下文中使用它。也就是说,在插入数据库之前不要转义数据。输出时只担心它。