免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1778 | 回复: 0
打印 上一主题 下一主题

PHP 字符串截取专题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-29 17:10 |只看该作者 |倒序浏览
  • 截取中文字符串(gb2312)方案

  • 截取utf8编码的多字节字符串

  • Utf-8、gb2312都支持的汉字截取函数

  • 摘录自 BugFree 的字符截取函数

    此函数用于截取gb2312编码的中文字符串:
    PHP:  // 说明:截取中文字符串 // 整理:http://www.CodeBit.cn  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; } ?>
    [/url]
    此函数用于截取utf8编码的多字节字符串:
    PHP:  // 说明:截取utf8字符串 // 整理:http://www.CodeBit.cn  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); } ?>Utf-8、gb2312都支持的汉字截取函数
    代码:
    PHP:  // 说明:Utf-8、gb2312都支持的汉字截取函数 // 整理:http://www.CodeBit.cn  /* 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'); ?>  摘录自 BugFree 的字符截取函数
    本函数摘录自 BugFree,支持字母和gb2312或者utf-8混和字符串。
    PHP:  // 说明:摘录自 BugFree 的字符截取函数 // 整理:http://www.CodeBit.cn  /**  * @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())  *  * @author                  Chunsheng Wang   * @param  string  $String  the string to cut.  * @param  int     $Length  the length of returned string.  * @param  booble  $Append  whether append "...": false|true  * @return 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); ?>
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u/1222/showart_1914440.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP