PHP从数据库中获取特殊字符

时间:2013-08-01 08:23:58

标签: php special-characters

我对特殊字符有疑问。对于前者在数据库中写入“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" /> 你能告诉我如何展示特殊角色吗?

3 个答案:

答案 0 :(得分:4)

如果您想从A &amp; A转换为A&A,请在文字上使用htmlspecialchars_decode
如果您想要从A&A转换为A &amp; A,请使用htmlspecialchars

在您的情况下,删除从数据库中提取的文本的htmlspecialchars操作将会执行。 由于您的问题似乎是将&字符替换为&amp;,因此运行类似$text = str_replace("&amp;", "&", htmlspecialchars($text));的内容可能会更适合您,并阻止XSS。

答案 1 :(得分:0)

如果数据库中有“A&amp; A”,htmlspecialchars会这样做。

删除htmlspecialchars。

答案 2 :(得分:0)

在将值插入数据库之前,最好使用rawurlencode。然后,每当您获取值时,请使用rawurldecode。我认为它可以解决你的问题。

   rawurldecode($row['name']);

选中此http://php.net/manual/en/function.rawurlencode.php