Php 如何解码除html实体以外的所有实体

Php 如何解码除html实体以外的所有实体,php,html-entities,html-encode,Php,Html Entities,Html Encode,我有一个字符串,它有一些特殊的字母,比如“á”和htmlcode,比如“”。当我在数据库中存储这个字符串时,我使用:htmlentities($string,entu引号)。 问题是当我输出文本时,我使用html\u entity\u decode($string\u from\u db,ENT\u QUOTES)和数据库中的所有实体,如“á;”来表示字母和字符“您可以在html\u entity\u decode之后再执行一次htmlspecialchars;该函数仅将在HTML中

我有一个字符串,它有一些特殊的字母,比如“
á
”和htmlcode,比如“
”。当我在数据库中存储这个字符串时,我使用:
htmlentities($string,entu引号)
问题是当我输出文本时,我使用
html\u entity\u decode($string\u from\u db,ENT\u QUOTES)
和数据库中的所有实体,如“
á;
”来表示字母和字符“
您可以在
html\u entity\u decode
之后再执行一次
htmlspecialchars
;该函数仅将在HTML中具有特殊功能的字符转换为其实体:

htmlspecialchars(html_entity_decode($string_from_db, ENT_QUOTES), ENT_QUOTES)

这应该注意结果字符串没有未编码的html字符。当然,就性能而言,这可能不是最好的解决方案,但很简单

看来我已经明白了。。。。至少现在是这样。以下是我正在做的:

  • 由用户提交的文本,我使用以下内容对其进行清理:

    function sanitize_form_input($string) {
        $string = mysql_real_escape_string($string);
        return $string;
    }
    
  • 获取页面编码,php编码,html编码,mysql编码。。。以及编码设置为UTF-8的任何其他可能的事情

  • 使用以下命令输出文本:

    function sanitize_db_output($string) {
        return htmlentities(stripslashes($string), ENT_QUOTES, 'UTF-8');
    }
    

  • 如果这样做是错误的,请告诉我。

    这对我没有帮助,因为它也会转换字母:|你为什么要做斜杠?你的代码不也会像你说的那样,把所有字符都显示为实体吗?我想我的答案的更新应该对你有用。。。