今天出现一个很神奇的问题,同事说在数据库出现异常数据,发给我手机号使用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);
完美解决,记住防止以后出现意外