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

如何用PHP去除JSON字符串中的特殊Unicode字符(如️等)

移除字符串中的特殊Unicode字符(如变体选择符、乱码字符)的PHP实现方法

你遇到的ufe0f是Unicode变体选择符-16(U+FE0F),而�是替换字符(U+FFFD,通常代表无效或无法渲染的Unicode字符)。以下几种PHP方法可以快速清理这类字符,得到纯目标字符串:

方法1:精准移除指定特殊Unicode字符

直接匹配变体选择符范围和替换字符,用正则替换为空:

$originalStr = "O_ufe0fPufe0f_ufe0fAufe0f";
// 移除U+FE00到U+FE0F的变体选择符,以及U+FFFD替换字符
$cleanedStr = preg_replace('/[\x{FE00}-\x{FE0F}\x{FFFD}]/u', '', $originalStr);
echo $cleanedStr; // 输出:O_P_A

u修饰符是关键,确保正则引擎以Unicode模式解析字符串,避免乱码。

方法2:只保留可打印ASCII字符

如果只需要保留字母、数字、下划线这类常规ASCII字符,用更严格的正则过滤:

// 保留所有可打印ASCII字符(空格~波浪号)
$cleanedStr = preg_replace('/[^\x20-\x7E]/u', '', $originalStr);

// 或者更精准:仅保留大小写字母、数字、下划线
$cleanedStr = preg_replace('/[^a-zA-Z0-9_]/u', '', $originalStr);

这种方式会彻底移除所有非ASCII的特殊字符,适合需要严格纯ASCII输出的场景。

方法3:使用mb扩展函数处理

如果你的环境启用了mbstring扩展,也可以用mb_ereg_replace实现同样效果:

$cleanedStr = mb_ereg_replace('[\x{FE00}-\x{FE0F}\x{FFFD}]', '', $originalStr);

如果还有其他需要移除的特殊Unicode字符,只需扩展正则表达式中的字符范围即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:22:49