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

使用preg_replace替换单个弯引号时出现多次替换,该如何排查?

问题原因及解决方法

你的问题出在正则表达式未启用多字节模式。

弯引号‘属于UTF-8编码的多字节字符,通常占用3个字节。默认情况下preg_replace以单字节模式处理字符串,会把这个多字节字符拆分成3个独立的单字节。此时你的正则/[‘]/在单字节模式下无法正确识别完整的弯引号,会把每个拆分出的字节都判定为匹配项,因此每个字节都被替换成x,最终输出xxx。

解决方法

  • 给正则表达式添加u修饰符,启用UTF-8多字节模式,让正则引擎正确识别完整的多字节字符:
    preg_replace('/[‘]/u', 'x', '‘');
    
  • 若仅需匹配单个弯引号,也可以简化正则,同样加上u修饰符:
    preg_replace('/‘/u', 'x', '‘');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:03:18