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 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
php不用正则验证真假身份证
Nov 06 PHP
最常用的8款PHP调试工具
Jul 06 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
PHP实现登录验证码校验功能
May 17 PHP
php5.6.x到php7.0.x特性小结
Aug 17 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
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP7 windows支持
2021/03/09 PHP
jQuery事件用法实例汇总
2014/08/29 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python文件操作整理汇总
2014/10/21 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
PHP统计代码行数的小代码
2019/09/19 Python
python使用列表的最佳方案
2020/08/12 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
python代码实现图书管理系统
2020/11/30 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
三年级数学教学反思
2014/01/31 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
mysql 排序失效
2022/05/20 MySQL