PHP htmlentities或htmlspecialchars = acentuation错误

时间:2015-04-10 12:39:10

标签: php mysql

我在CONFIG.PHP上有这个功能:

foreach($_POST as $key => $value){ 
  if (!is_array($value)){
  $_POST[$key] = htmlspecialchars($value);
  }
}

foreach($_GET as $key => $value){ 
  if (!is_array($value)){
  $_GET[$key] = htmlentities($value);
  }
}

防止所有POST和GET中的html注入。 它从post,get,htmlentities中获取价值并在mysql中记录。

我的mysql排序规则:utf8mb4_general_ci

问题是,没有htmlentities,acentuation很好,我可以阅读mysql上的everthing。但是,随着那些具有百分比的词语变得疯狂:

não

é

我做错了什么?

1 个答案:

答案 0 :(得分:0)

htmlspecialchars和htmlentities是用他们的代码版本交换特殊字符。 html仍会显示符号,因为它会自动翻译代码。但是你自己删除符号。 因此,你的结果是你应该得到的。

如果你不想要他的代码版本的symbosl,f.e。如果你想稍后搜索它们,你应该转义所有变量。