我对特殊字符有疑问。对于前者在数据库中写入“A& A”(数据库在utf8-unicode-ci上设置)。 我正在autosugest列表中正确检索值:
while ($row = mysql_fetch_array($result)) {
$keywords = htmlspecialchars($row['name']);
echo "<keywords>". $keywords ."</keywords>";
}
当我点击选择输入字段中的“A&amp; A”时,填写为A&amp;放大器;甲
标题设置为:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你能告诉我如何展示特殊角色吗?
答案 0 :(得分:4)
如果您想从A & A
转换为A&A
,请在文字上使用htmlspecialchars_decode
。
如果您想要从A&A
转换为A & A
,请使用htmlspecialchars
。
在您的情况下,删除从数据库中提取的文本的htmlspecialchars
操作将会执行。
由于您的问题似乎是将&
字符替换为&
,因此运行类似$text = str_replace("&", "&", htmlspecialchars($text));
的内容可能会更适合您,并阻止XSS。
答案 1 :(得分:0)
如果数据库中有“A&amp; A”,htmlspecialchars会这样做。
删除htmlspecialchars。
答案 2 :(得分:0)
在将值插入数据库之前,最好使用rawurlencode
。然后,每当您获取值时,请使用rawurldecode
。我认为它可以解决你的问题。
rawurldecode($row['name']);