php完美截取中文字符函数mb_substr

时间:2022-08-16 07:44:43
php内置的substr无法解决截取中文字符串的乱码问题,在php.ini打开extension=php_mbstring.dll支持的情况下,可以使用mb_substr完美解决中文截取

要使用到的函数:mb_substr和mb_strlen。

mb_substr使用方法:mb_substr("我是要被截取的中文字符串",开始位置, 要截取的长度, 字符串的编码);实例:mb_substr("我是要被截取的中文字符串",0, 3, 'gbk');结果将是“我是要”;这个函数可以解决字符串中包含中文、英文、数字、字符各种类型的字符串。

在实际使用过程中需要和mb_strlen配合使用,mb_strlen的使用方法和strlen类似,只是多了一个编码参数:mb_strlen("我是要被计算长度的字符", "gbk");结果是11。

详细的使用例子:

比如字符串超过20个就需要截取:

if(mb_strlen($str, "gbk") >20)

{

  $str = mb_substr($str, 0, 20, "gbk");

}

经常面试的时候问你如何实现字符串翻转,第一反应,当然是strrev函数啦,这么容易的题目还放在面试里考,真不嫌麻烦啊?

strrev函数对英文很好用,直接可以实现字符串翻转,但是面对中文呢?肯定都是乱码,对于这样的问题有很多,比如strstr,substr等函数都是这样的。还好PHP提供了mb_类的函数实现不同编码、不同语言之间的相互转换等操作。下面是我写的PHP字符串翻转函数(mb_类的函数需要开启一个mb_string实现)。

<?PHP
    
    function getRev($str,$encoding='utf-8'){
        $result = '';
        $len = mb_strlen($str);
        for($i=$len-1; $i>=0; $i--){
            $result .= mb_substr($str,$i,1,$encoding);
        }
        return $result;
    }
      $str="我爱博客园"
       echo getRev($str);

?>
//输出结果园客博爱我