php自定义截取中文字符串-utf8版

作者:袖梨 2022-06-24

先说明:网上目前有很多这个问题的代码,但是很多都是复制粘贴,没有自己实践,而且代码有逻辑问题,下面的代码由我自己编写。

话不多说

 

 代码如下复制代码

/**

   * 该函数是对于utf8编码

   * @author [email protected]

   * @param string $str

   * @param int $start

   * @param int $length

   * @return string

   * @copyright 2017年2月27日下午1:46:10

   */

  functiongbsubstr2($str,$start,$length) {

    $length=abs($length);

    $strLen=strlen($str);

    $len=$start+$length;

    $newStr=''

    for($i=$start;$i<$len&&$i<$strLen;$i++) {

      if(ord(substr($str,$i, 1)) > 0xa0) {

        //utf8编码中一个汉字是占据3个字节的,对于其他的编码的字符串,中文占据的字节各有不同,自己需要去修改这个数a

        $newStr.=substr($str,$i, 3);//此处a=3;

        $i+=2;

        $len+= 2;//截取了三个字节之后,截取字符串的终止偏移量也要随着每次汉字的截取增加a-1;

      }else{

        $newStr.=substr($str,$i, 1);

      }

    }

    return$newStr;

  }

 

相关文章

精彩推荐