自学内容网 自学内容网

PHP 去掉特殊不可见字符 “\u200e“

  • 描述
    最近在排查网站业务时,发现有数据匹配失败的情况
    肉眼上完全看不出问题所在
    当把字符串 【'M24308/23-14F‎'】复制出来发现 末尾有个不可见的字符

    使用删除键或左右移动时才会发现
    最后测试通过 var_dump 打印 发现这个"空字符"占了三个长度 (显示一个小点)

1. 通过了解,基本定位在 业务人员在 excel数据表 复制过程中,意外带来了这个 “不可见字符”
2. 我的目的,就是为了能满足 正常业务的字符串比对
    需要去掉 末尾的特殊字符
3. 测试发现,使用 trim()、mb_trim() 都无法去除,最终使用 preg_replace()可进行匹配替换 .
  • 测试代码
    通过多次测试,与借鉴网上经验,可参考如下测试代码:

    $string = 'M24308/23-14F‎';
        var_dump($string);
    
        $lastChar = mb_substr($string, -1); // 获取最后一个字符
        var_dump($lastChar);
    
        $asciiValue = mb_ord($lastChar); // 获取最后一个字符的ASCII值
        var_dump( "最后一个字符的--ASCII值 是:".$asciiValue);
    
        $pattern = "/[\x{200b}-\x{200f}]/u";
        $str = preg_replace($pattern, "", $string);
        var_dump($str);
    
  • 运行结果

  • 处理代码如下

    //处理型号(可能有 特殊不可见字符)
            $xingHao = $_notice['型号']??'';
            $pattern = "/[\x{200b}-\x{200f}]/u";
            $xingHao = preg_replace($pattern, "", $xingHao);
    
  • 参考
    php 去掉不可见字符串,php删除不可见的Unicode字符


原文地址:https://blog.csdn.net/u011415782/article/details/144109598

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!