• php实现中文字符串无乱码截取


    在PHP开发中会经常用到字符串截取,有的时候字符串截取会出现乱码的情况,那么怎么解决这个问题呢,其实也很容易

    首先我们要了解关于中英文占多少字节的问题。
    
    ASCII码:一个中文汉字占两个字节的空间。
    
    UTF-8编码:一个中文(含繁体)等于三个字节。
    
    Unicode编码:一个中文(含繁体)等于两个字节。

    下面我们就通过几个简单的代码示例为大家详细介绍关于PHP截取中英字符串且无乱码的相关知识。

    一、 substr() 截取字符串(是以字节为单位进行截取的)
    <?php

    ehco substr('PHP中文网', 0, 5);
    substr()中第一个参数表示要截取的字符串,第二个参数表示从0位置开始截取,第三个参数表示截取长度。
    
    截取“PHP中文网”前5个字节,结果如下:

    如图显示乱码,也就是说当我们使用substr函数进行中英文字符串截取时,会出现乱码,为什么呢?因为substr函数截取字符串的单位是字节,在截取中文的时候会有不能完整截取的情况出现,所以会出现乱码的情况。

    二、关于mb_substr()截取字符串

    <?php

    echo mb_substr('php中文网', 0, 5);

    mb_substr:获取部分字符串。
    
    截取“PHP中文网”前5个字符,结果如下:

    如图截取了前五个字符,并且没有出现乱码。
    
    注:mb_substr是根据字符数来执行截取字符串。

    三、 mb_strcut() 截取字符串

    <?php
    
    echo mb_strcut("PHP中文网", 0, 7);
    
    截取“PHP中文网”前7个字节,结果如下:

    从图中可以看到,我们要截取7个字节,但是只显示截取了“PHP中”这6个字节。由于一个汉字等于三个字节,那么这里第7个字节就不会显示了。
    
    综上所述,如果大家遇到要截取中文字符串并无乱码的需求时,可以选择后两种方法(mb_substr()和mb_strcut())


  • 相关阅读:
    cocos2d-x CCNotificationCenter一个优化想法
    【备忘】尾调用(尾递归)--来自维基百科
    [转] 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始
    [转]编程修养
    DirectX11 SDK 例程报错解决方法
    unity3d Vector3.Lerp解析
    unity3d 三分钟实现简单的赛车漂移
    Unity 5.3.1 No Android/IOS module loaded
    unity3d 音频无缝循环
    unity3d 扩展NGUI Tweener —— TweenTime
  • 原文地址:https://www.cnblogs.com/skl-bobo/p/10487641.html
Copyright © 2020-2023  润新知