使用php实现截取指定长度

2015-01-24信息快讯网

以下是对使用php实现截取指定长度的方法进行了详细的分析介绍,需要的朋友可以过来参考下

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中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
PHP函数addslashes和mysql_real_escape_string的区别
php实现httpclient类示例
php使用json_encode对变量json编码
php警告Creating default object from empty value 问题的解决方法
php中stream(流)的用法
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
php检测useragent版本示例
PHP使用imagick读取PDF生成png缩略图的两种方法
PHP fopen()和 file_get_contents()应用与差异介绍
zf框架的db类select查询器join链表使用示例(zend框架)
zf框架的registry(注册表)使用示例
zf框架的Filter过滤器使用示例
PHP加Nginx实现动态裁剪图片方案
详解PHP中strlen和mb_strlen函数的区别
php中filter函数验证、过滤用户输入的数据
php二维数组排序方法(array_multisort usort)
php使用filter过滤器验证邮箱 ipv6地址 url验证
解析php中如何调用用户自定义函数
php 如何获取数组第一个值
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
PHP中fwrite与file_put_contents性能测试代码
解析php中curl_multi的应用
Php output buffering缓存及程序缓存深入解析
深入Nginx + PHP 缓存详解
php打开文件fopen函数的使用说明
深入解析fsockopen与pfsockopen的区别
解析php php_openssl.dll的作用
浅析PKI加密解密 OpenSSL
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
php 去除html标记--strip_tags与htmlspecialchars的区别详解
解析strtr函数的效率问题
比较strtr, str_replace和preg_replace三个函数的效率
PHP中mb_convert_encoding与iconv函数的深入解析
PHP array_multisort() 函数的深入解析
深入array multisort排序原理的详解
如何利用php array_multisort函数 对数据库结果进行复杂排序
深入密码加salt原理的分析
©2014-2024 dbsqp.com