零宽空格介绍及常见处理
原创
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条评论