博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 截取字符串
阅读量:7077 次
发布时间:2019-06-28

本文共 3692 字,大约阅读时间需要 12 分钟。

hot3.png

1. 截取GB2312中文字符串< ?php   //截取中文字符串  function mysubstr($str, $start, $len) {      $tmpstr = "";      $strlen = $start + $len;      for($i = 0; $i < $strlen; $i++) {          if(ord(substr($str, $i, 1)) > 0xa0) {              $tmpstr .= substr($str, $i, 2);              $i++;          } else              $tmpstr .= substr($str, $i, 1);      }      return $tmpstr;  }  ?> 2. 截取utf8编码的多字节字符串< ?php  //截取utf8字符串  function utf8Substr($str, $from, $len)  {      return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.                         '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',                         '$1',$str);  }  ?> 3. UTF-8、GB2312都支持的汉字截取函数< ?php  /*   Utf-8、gb2312都支持的汉字截取函数   cut_str(字符串, 截取长度, 开始长度, 编码);   编码默认为 utf-8   开始长度默认为 0   */      function cut_str($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))."...";           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)                   {                       $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;       }   }      $str = "abcd需要截取的字符串";   echo cut_str($str, 8, 0, 'gb2312');   ?> 4. BugFree 的字符截取函数< ?php   /**    * @package     BugFree    * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $    *    *    * Return part of a string(Enhance the function substr())    *    *                    Chunsheng Wang 
* @param string $String the string to cut. * @param int $Length the length of returned string. * @param booble $Append whether append "...": false|true * string the cutted string. */ function sysSubStr($String,$Length,$Append = false) { if (strlen($String) < = $Length ) { return $String; } else { $I = 0; while ($I < $Length) { $StringTMP = substr($String,$I,1); if ( ord($StringTMP) >=224 ) { $StringTMP = substr($String,$I,3); $I = $I + 3; } elseif( ord($StringTMP) >=192 ) { $StringTMP = substr($String,$I,2); $I = $I + 2; } else { $I = $I + 1; } $StringLast[] = $StringTMP; } $StringLast = implode("",$StringLast); if($Append) { $StringLast .= "..."; } return $StringLast; } } $String = "CodeBit.cn -- 简单、精彩、通用"; $Length = "18"; $Append = false; echo sysSubStr($String,$Length,$Append); ?>

转载于:https://my.oschina.net/qianfunian/blog/70549

你可能感兴趣的文章
理解作用域(引擎,编译器,作用域)
查看>>
Uva 1625,颜色的长度
查看>>
centos7.2环境下安装smokeping对网络状态进行监控
查看>>
通达OA系统myisam转innodb引擎
查看>>
正则表达式问题观看
查看>>
[教程]MongoDB 从入门到进阶 (aggregation数据库状态)
查看>>
查看linux是ubuntu还是centos
查看>>
H5——表单验证新特性,注册模态框!
查看>>
sintimental analysis
查看>>
Java并发包--线程池原理
查看>>
获取网页数据的例子
查看>>
洛谷P3265 装备购买
查看>>
Database | SQL
查看>>
struts2的配置文件
查看>>
匆匆三月,归来已非少年
查看>>
php加载mysql
查看>>
HDOJ 2098 分拆素数和(筛选法求素数)
查看>>
Java Web整合开发(21) -- 宏观把握Hibernate
查看>>
JSP第5次测试---测试分析
查看>>
泛型介绍
查看>>