php实现中文字符截取防乱码方法汇总


Posted in PHP onApril 29, 2015

大家在自己的程序中相信都会经常用到截取字符串吧,但是往往遇到截取中文字符串的时候会遇到乱码的问题。很是让人头疼,接下来介绍两种方法防止截取中文字符串的时候出现乱码的问题。
首先第一种,自己写好的一个函数方便使用
利用这个函数截取就不会出现乱码了。

/** 
 * 支持中文字符串截取 
 */ 
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ 
  switch($charset){ 
    case 'utf-8':$char_len=3;break; 
    case 'UTF8':$char_len=3;break; 
    default:$char_len=2; 
  } 
  //小于指定长度,直接返回 
  if(strlen($str)<=($length*$char_len)){   
    return $str; 
  } 
  if(function_exists("mb_substr")){  
    $slice= mb_substr($str, $start, $length, $charset); 
  }else if(function_exists('iconv_substr')){ 
    $slice=iconv_substr($str,$start,$length,$charset); 
  }else{ 
    $re['utf-8']  = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; 
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; 
    $re['gbk']  = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; 
    $re['big5']  = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; 
    preg_match_all($re[$charset], $str, $match); 
    $slice = join("",array_slice($match[0], $start, $length)); 
  } 
  if($suffix) 
    return $slice; 
  return $slice; 
}

第二种是php内置的一个函数mb_substr函数

指定要截取的字符串的编码格式,就能有效的防止出现乱码了。

说明

string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] ) 
<?php 
 function substr_unicode($str, $s, $l = null) { 
   return join("", array_slice( 
     preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l)); 
 } 
 
$str = "Büyük"; 
 $s = 0; // start from "0" (nth) char 
 $l = 3; // get "3" chars 
 echo substr($str, $s, $l) ."\n";  
 echo mb_substr($str, $s, $l) ."\n"; 
 echo substr_unicode($str, $s, $l); 
 ?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
php-7.3.6 编译安装过程
Feb 11 PHP
WIN8.1下搭建PHP5.6环境
Apr 29 #PHP
php筛选不存在的图片资源
Apr 28 #PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 #PHP
php恢复数组的key为数字序列的方法
Apr 28 #PHP
php递归调用删除数组空值元素的方法
Apr 28 #PHP
php删除文本文件中重复行的方法
Apr 28 #PHP
php实现简单的语法高亮函数实例分析
Apr 27 #PHP
You might like
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php实现aes加密类分享
2014/02/16 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Python中装饰器高级用法详解
2017/12/25 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
Python File(文件) 方法整理
2019/02/18 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
QML实现钟表效果
2020/06/02 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
What is EJB
2016/07/22 面试题
给排水专业应届生求职信
2013/10/12 职场文书
物流专业大学生的自我鉴定
2013/11/13 职场文书
带薪年假请假条
2014/02/04 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
避暑山庄导游词
2015/02/04 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书