php截取中文字符串函数实例


Posted in PHP onFebruary 23, 2015

本文实例讲述了php截取中文字符串函数。分享给大家供大家参考。具体实现方法如下:

<?php

//中文字符串截取

function substr_zh($string,$sublen,$start=0,$code='UTF-8'){

 if($code=='UTF-8'){

  $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";

  preg_match_all($pa,$string,$t_string);

  if(count($t_string[0])-$start > $sublen){

   return join('',array_slice($t_string[0],$start,$sublen))."...";

   //array_slice()在数组中根据条件取出一段值,参数(数组,开始位置,[长度])

  }else{

   return join('',array_slice($t_string[0],$start,$sublen));

  }

 }else{

  $start = $start*2;

  $sublen = $sublen*2;

  $strlen = strlen($string);

  $tmpstr = '';

  for($i=0;$i<$strlen;$i++){

   if($i>$start && $i<($start+$sublen)){

    if(ord(substr($string,$i,1))>129){

    //ord():返回字符串第一个字符的ASCII值

    //substr():返回字符串的一部分

     $tmpstr .= substr($string,$i,2);

    }else{

     $tmpstr .= substr($string,$i,1);

    }

   }

   if(ord(substr($string,$i,1))>129){

    $i++;

   }

   if(strlen($tmpstr)<$strlen){

    $tmpstr .= "...";

   }

  }

  return $tmpstr;

 }

}

$string ="顶置车顶起困境??上盯协押畏奇才趄肯困楞右脚可爱有";

echo substr_zh($string,10,0,'gb2312');

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
php header Content-Type类型小结
Jul 03 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
跟我学Laravel之视图 &amp; Response
Oct 15 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP排序算法类实例
Jun 17 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
php输入数据统一类实例
Feb 23 #PHP
php简单定时执行任务的实现方法
Feb 23 #PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 #PHP
Yii学习总结之安装配置
Feb 22 #PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 #PHP
十幅图告诉你什么是PHP引用
Feb 22 #PHP
PHP的引用详解
Feb 22 #PHP
You might like
php设计模式 Strategy(策略模式)
2011/06/26 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
Vue3为什么这么快
2020/09/23 Javascript
python中类的一些方法分析
2014/09/25 Python
python检测是文件还是目录的方法
2015/07/03 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python 解压pkl文件的方法
2018/10/25 Python
Python列表list排列组合操作示例
2018/12/18 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
python如何编写win程序
2020/06/08 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
少年闰土教学反思
2014/02/22 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
出国签证在职证明范本
2014/11/24 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
酒会邀请函
2015/01/31 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
导游词之南京中山陵
2019/11/27 职场文书