截取UTF-8编码下字符串的函数

/**

   * 截取UTF-8编码下字符串的函数

   *

     * @param   string      $str        被截取的字符串

     * @param   int         $length     截取的长度

     * @param   bool        $append     是否附加省略号

     *

     * @return  string

     */

 function sub_str($str, $length = 0, $append = false)

 {

     $str = trim($str);

     $strlength = strlen($str);

     if ($length == 0 || $length >= $strlength) {

         return $str;

     } elseif ($length < 0) {

         $length = $strlength + $length;

         if ($length < 0) {

             $length = $strlength;

         }

     }

     if (function_exists('mb_substr')) {

         $newstr = mb_substr($str, 0, $length, 'UTF-8');

     } elseif (function_exists('iconv_substr')) {

         $newstr = iconv_substr($str, 0, $length, 'UTF-8');

     } else {

         $newstr = trim_right(substr($str, 0, $length));

     }

     if ($append && $str != $newstr) {

         $newstr .= '...';

     }

     return $newstr;

 }

 

/**

   * 去除字符串右侧可能出现的乱码

   *

   * @param   string      $str        字符串

   *

   * @return  string

   */

 function trim_right($str)

 {

     $length = strlen(preg_replace('/[/x00-/x7F]+/', '', $str)) % 3;

     if ($length > 0)

     {

         $str = substr($str, 0, 0 - $length);

     }

     return $str;

 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值