我在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。
它从发布,获取,htmlentities获取价值,并记录在mysql中。

我的mysql排序规则:utf8mb4_general_ci

问题是,没有htmlentities,acentuation很好,我可以在mysql上阅读所有内容。但是随着htmlentities,带有沉迷感的单词变得像这样疯狂:

não

é


我做错了什么?

最佳答案

htmlspecialchars和htmlentities可以与其代码版本交换特殊字符。 html仍会在自动翻译代码时显示该符号。但是您可以删除符号本身。
因此,您的结果就是您应该得到的。

如果您不希望他对symbosl进行代码版本化,则如果以后要搜索它们,则应转义所有变量。

关于php - PHP htmlentities或htmlspecialchars =合并错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29561690/

10-12 12:28