使用php实现截取指定长度


Posted in PHP onAugust 06, 2013

PHP语言: 根据中文裁减字符串

function cutstr($string,$length, $dot = ' ...') {
  if (strlen($string) <= $length) {
      return$string;
  }
  $pre = chr(1);
  $end = chr(1);
  $string = str_replace(array('&','"', '<', '>'),array($pre . '&'. $end, $pre . '"' . $end, $pre . '<' .$end, $pre . '>' . $end), $string);  $strcut = '';
  if (strtolower(CHARSET) == 'utf-8'){
      $n = $tn =$noc = 0;
      while ($n< strlen($string)) {
         $t =ord($string[$n]);
         if ($t == 9 || $t == 10 || (32<= $t && $t <= 126)) {
            $tn = 1;
            $n++;
            $noc++;
         } elseif (194 <= $t&& $t <= 223) {
            $tn = 2;
            $n += 2;
            $noc += 2;
         } elseif (224 <= $t&& $t <= 239) {
            $tn = 3;
            $n += 3;
            $noc += 2;
         } elseif (240 <= $t&& $t <= 247) {
            $tn = 4;
            $n += 4;
            $noc += 2;
         } elseif (248 <= $t&& $t <= 251) {
            $tn = 5;
            $n += 5;
            $noc += 2;
         } elseif ($t == 252 || $t ==253) {
            $tn = 6;
            $n += 6;
            $noc += 2;
         } else {
            $n++;
         }
         if ($noc >= $length){
            break;
         }
     }
      if ($noc> $length) {
         $n -= $tn;
     }
      $strcut =substr($string, 0, $n);
  } else {
      for ($i =0; $i < $length; $i++) {
         $strcut .= ord($string[$i])> 127 ? $string[$i] . $string[++$i] : $string[$i];
     }
  }
  $strcut = str_replace(array($pre . '&' .$end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' .$end), array('&', '"','<', '>'), $strcut);
  $pos = strrpos($strcut, chr(1));
  if ($pos !== false) {
      $strcut =substr($strcut, 0, $pos);
  }
  return $strcut . $dot;
}
PHP 相关文章推荐
PHP goto语句简介和使用实例
Mar 11 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
php读取文件内容到数组的方法
Mar 16 PHP
phalcon框架使用指南
Feb 23 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
thinkphp分页实现效果
Oct 13 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
如何判断微信付款码和支付宝付款码
Apr 01 PHP
php 如何获取数组第一个值
Aug 06 #PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 #PHP
php实现统计邮件大小的方法
Aug 06 #PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 #PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 #PHP
深入解析PHP中逗号与点号的区别
Aug 05 #PHP
php 读取文件头判断文件类型的实现代码
Aug 05 #PHP
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
Element PageHeader页头的使用方法
2020/07/26 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
python threading模块操作多线程介绍
2015/04/08 Python
python http基本验证方法
2018/12/26 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
详解python算法常用技巧与内置库
2020/10/17 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
证券区域经理岗位职责
2015/04/10 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
学习经验交流会总结
2015/11/02 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python