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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php无序树实现方法
Jul 28 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
php 解析非标准json、非规范json
Apr 01 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue实现购物车小案例
2019/09/27 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
Python发送Email方法实例
2014/08/21 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python批量赋值操作实例
2018/10/22 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
python单例设计模式实现解析
2020/01/07 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
Solaris操作系统的线程机制
2015/07/28 面试题
社区庆中秋节活动方案
2014/02/07 职场文书
律政俏佳人观后感
2015/06/09 职场文书