零宽空格介绍及常见处理
原创 52cxy 02-19 15:16 阅读数:238

零宽空格(Zero Width Space,Unicode 编码 U+200B)是一种不可见的 Unicode 字符,常用于排版控制(如换行分隔符),但有时会在文本处理中意外引入,导致字符串比较、校验或存储时出现问题。以下是关于零宽空格的详细说明及处理方法:


 零宽空格的特征 

 不可见:在大多数编辑器中不显示,但会占用字符位置。 

 常见场景: 

  • 从网页(如富文本编辑器)复制的文本中。

  • 通过某些 API 或数据库导出的数据。

  • 用户输入中意外粘贴的隐藏字符。


 检测零宽空格 

若不确定字符串是否包含零宽空格,可通过以下方法检测:

方法 1:转换为十六进制查看

$string = "HelloWorld"; // 中间隐藏了零宽空格
echo bin2hex($string); 
// 输出:48656c6c6fe2808b576f726c64
// 其中 `e2808b` 是零宽空格(UTF-8 编码)


方法 2:正则表达式匹配

if (preg_match('/\x{200B}/u', $string)) {
    echo "该字符串中包含零宽空格!";
}


 删除零宽空格 

方法 1:精准删除零宽空格

$result = preg_replace('/\x{200B}/u', '', $string);


方法 2:删除所有不可见控制字符

如果需清理更广泛的隐藏字符(如零宽连字符、BOM 头等):

$result = preg_replace('/\p{C}+/u', '', $string);


共0条评论
我要评论