1、复现
<?php
// 示例
header("Content-type: text/html; charset=utf-8");
$str = '你好';
var_dump(mb_strlen($str)); # 输出结果 int(4)
让隐藏字符显现
var_dump(json_encode($str)); # 输出结果 string(26) ""\u4f60\u597d\u200b\u200b""
很明显后面多了两个隐藏的字符\u200b
2、处理
js过滤处理
function filter_str(str) {
return str.replace(/[\u200b-\u200f\uFEFF\u202a-\u202e]/g, "");
}
php过滤处理
function filter_str(str) {
$str = json_encode($str); // 转换为Unicode编码
$patterns = ['/®/', '/​/', '#\\\u200b#us']; // 正则表达式
$replacements = ['', '', '']; // 替换成的字符
$str = preg_replace($patterns, $replacements, $str);
$str = json_decode($str, true); //解码Unicode编码
return $str;
}
参考链接:https://blog.csdn.net/wuxianbing2012/article/details/107206020