关于不可见字符处理问题

今天出现一个很神奇的问题,同事说在数据库出现异常数据,发给我手机号使用PHP打印长度是14位,js打印是12位,很奇怪,最后发现是不可见字符在最后,可以直接复制以下代码测试

18241116451‬

  这个打印是14位的,最后多方搜索发现是不可见字符的问题,最后经过百度暂时只找到了正则修改方法,代码如下

$a = '18241116451‬';
$pattern = "/[x{007f}-x{009f}]|x{00ad}|[x{0483}-x{0489}]|[x{0559}-x{055a}]|x{058a}|[x{0591}-x{05bd}]|x{05bf}|[x{05c1}-x{05c2}]|[x{05c4}-x{05c7}]|[x{0606}-x{060a}]|[x{063b}-x{063f}]|x{0674}|[x{06e5}-x{06e6}]|x{070f}|[x{076e}-x{077f}]|x{0a51}|x{0a75}|x{0b44}|[x{0b62}-x{0b63}]|[x{0c62}-x{0c63}]|[x{0ce2}-x{0ce3}]|[x{0d62}-x{0d63}]|x{135f}|[x{200b}-x{200f}]|[x{2028}-x{202e}]|x{2044}|x{2071}|[x{f701}-x{f70e}]|[x{f710}-x{f71a}]|x{fb1e}|[x{fc5e}-x{fc62}]|x{feff}|x{fffc}/u";

$str = '‎'; 
$str = preg_replace($pattern, "", $a);

var_dump($str); 

  完美解决,记住防止以后出现意外

原文地址:https://www.cnblogs.com/zdzdbk/p/10599035.html