PHP html_entity_decode()数字html实体60和62的异常

PHP html_entity_decode()数字html实体60和62的异常,php,Php,除了数字html实体60和62之外,如何使用PHP的html\u entity\u decode() 目前,我的代码如下所示: $t = mysqli_real_escape_string($db,html_entity_decode($_POST['title'],ENT_COMPAT,'UTF-8')); 然而,如果我有一个被编码为在内容中显示为插入符号(就像你会直接向客户端显示一个符号一样)的代码,它们也会被编码,这导致了格式错误的HTML。所以我需要做一些例外,尽管我不知道如何做;用临

除了数字html实体60和62之外,如何使用PHP的
html\u entity\u decode()

目前,我的代码如下所示:

$t = mysqli_real_escape_string($db,html_entity_decode($_POST['title'],ENT_COMPAT,'UTF-8'));

然而,如果我有一个被编码为在内容中显示为插入符号(就像你会直接向客户端显示一个符号一样)的代码,它们也会被编码,这导致了格式错误的HTML。所以我需要做一些例外,尽管我不知道如何做;用临时占位符替换字符串?我相信有更好的办法。

暂时的回答,因为这可能是一个:
解析html实体后,可以通过“重新编码”那些可能会损害html结构的字符


“解码”过账价值的目的是什么?好像。。这样做有点不对劲。通常HTML输入字段不会“编码”任何值。我支持许多不同的非拉丁语言和客户端浏览器,PHP和混合中的其他任何东西都会抓住每一个机会破坏HTML实体,因此在编辑页面时,我会将127个以上的字符转换为数字HTML实体,以确保它们的安全……当将它们放入数据库时,长度成了一个问题,但是SQL正确地支持Unicode/UTF-8,因此这是确保客户可以看到客户需要做的事情。:-)我不知道如何设计来处理这样的问题(或者如何正确处理它)。@user2864740当你有一个像
<
>
(插入符号<和>字符)如果将它们转换为常规字符,则系统中没有区分如何将它们转换回,因此它们在进入数据库时必须保持编码状态;绝不允许主观地存储代码,因为网站不是由人工提供服务,而是由服务器和软件自动提供服务。
最好称为尖括号
^
是一个插入符号(不受HTML编码或解码的影响)。我认为问题在于PHP没有线索或可能理解哪些插入符号要编码,哪些应该是实体。因此,除非有一个内置的异常或不同的函数可以使用,否则我可能应该创建自己的函数,在使用
html\u entity\u decode()
之前和之后临时进行字符串替换。或者,您不在存储值时应用编码,而是在输出时应用编码。如果这对性能有负面影响->缓存;-)不幸的是,这对我来说是双重否定。虽然编码为数字实体,但SQL字段(如元描述)的有意限制并不能补偿数字HTML实体,而且我真的花不起一点时间来调整它,而且它没有什么意义。此外,每次编辑器切换到HTML模式(从可视模式)时,JavaScript都会以任何方式将代码127上的所有字符转换为实体。我没有看到一个替代我所希望的双字符串替换;我只想做我的客户想要做的事。:-)不,不,我只是指编码,而不是解码:html_entity_decode(),不考虑<和/或>,即按原样存储<和>,但在外部应用htmlspecialchars()。我尝试了,它从变量中删除了字符串内容。:-\
$t = mysqli_real_escape_string(
    $db,
    htmlspecialchars(
        html_entity_decode($_POST['title'],ENT_COMPAT,'UTF-8'),
        'UTF-8'
    )
);