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

如何通过PHP表单与MySQL/MariaDB实现UTF-8字符替换

PHP表单结合MySQL REGEXP_REPLACE替换UTF-8字符的问题

我希望通过PHP表单结合MySQL/MariaDB的REGEXP_REPLACE函数,将某列中的UTF-8字符替换为其他UTF-8字符。

初始代码

$search = mysqli_real_escape_string($id_mysql, $_POST['search']);
$new = mysqli_real_escape_string($id_mysql, $_POST['new']);
mysqli_query ($id_mysql,
    "UPDATE table_name
    SET column_name = REGEXP_REPLACE(column_name, '$search', '$new')
    WHERE column_name REGEXP '$search'"
    ) or die(mysqli_error($id_mysql));

补充说明

  • 为便于理解问题,我移除了mysqli_real_escape_string函数。
  • 注意:PHP正则中Unicode字符使用\x{26A1}格式,而MySQL正则需使用\u{26A1}格式(上述十六进制码仅为示例)。

问题场景

1. 直接赋值时可正常运行

当直接给变量赋值时,代码能正常执行替换:

$search = "\u{264B}";
$new = "\u{264C}";

2. 表单提交时无法正常工作

但通过表单提交\u{264B}或"\u{264B}"作为搜索内容时,替换失效:

$search = $_POST['search'];
$new = "\u{264C}";

此时通过$_POST获取的\u{264B}会被PHP识别为普通字符串,而非双引号解析后的Unicode字符。已知PHP只有双引号字符串才会解析Unicode转义序列,但尝试多种方法都无法让POST内容按双引号方式解析,同时我还需要实现更复杂的搜索与替换需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:22:47