You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中验证HTML表单提交的Unicode实体字符?

问题原因

浏览器提交表单时会自动将HTML Unicode实体解码为对应的真实Unicode字符,因此你通过$_POST['action']拿到的不是字符串✘,而是解码后的删除符号✖,直接和实体字符串匹配自然会失败。

解决方案

你可以根据使用场景任选以下方案:

  • 方案1:直接匹配真实Unicode字符
    直接将判断条件中的值换成对应的删除符号即可,注意需要保证你的PHP文件本身使用UTF-8编码存储,避免字符解析异常。
    示例代码:
    <?php
        $to_do = $_POST['action'];
        if( $to_do == "✖") {
            echo "i will delete for you";
        }
    ?>
    
  • 方案2:将接收值转成HTML实体后匹配
    如果你需要保留和实体字符串匹配的逻辑,可以先用htmlentities()函数将接收的内容转成HTML实体后再做判断。
    示例代码:
    <?php
        $to_do = htmlentities($_POST['action'], ENT_QUOTES, 'UTF-8');
        if( $to_do == "&#10008;") {
            echo "i will delete for you";
        }
    ?>
    
  • 方案3:优化表单结构(最推荐)
    实际业务中不推荐用特殊符号作为业务状态判断值,你可以把提交的value设为普通字符串,显示层单独展示删除符号,完全避免编码匹配问题。
    对应的HTML表单代码示例:
    <button type="submit" name="action" value="delete">✖</button>
    
    这样提交的action值仍然是delete,你原本的判断逻辑无需修改即可正常运行。

内容的提问来源于stack exchange,提问作者webs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:06:07