今天出现一个很神奇的问题,同事说在数据库出现异常数据,发给我手机号使用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); 

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

posted on 2019-03-26 11:27  代码书写人生  阅读(1323)  评论(0编辑  收藏  举报