1. 截取GB2312中文字符串

<?php
< ?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
< ?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
< ?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/   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 = ''

$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312'); 
?>

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)

;

;
   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;
   }
}

4. BugFree 的字符截取函数

<?php
< ?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())
*
* @author Chunsheng Wang <wwccss@263.net>
* @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); 
?>

版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始地址、作者信息和本声明。

原文地址:http://www.ccvita.com/27.html

PHP 截取字符串专题相关推荐

  1. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...

  2. CSS截取字符串,兼容浏览器

    今天在经典论坛看到有同学问到CSS截取字符多余省略号代替的求助且要兼容FF... 这个的确是个比较头痛的问题,现在我在的公司都是程序截取显示省略符的.兼容是没问题,但在中文和数学或字母混排时,就会有点 ...

  3. Swift4 String截取字符串

    var str1 = "AlexanderYeah";// 1 截取字符串的第一种方式 // prefix 截取前3个字符串 var str2 = str1.prefix(3); ...

  4. smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty。...

    smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty. function smarty_modifier_trunca ...

  5. ASP.NET技巧:两个截取字符串的实用方法

    两个截取字符串的实用方法(超过一定长度自动换行) 1/** <summary> 2        /// 截取字符串,不限制字符串长度 3        /// </summary& ...

  6. Java --循环截取字符串

    2019独角兽企业重金招聘Python工程师标准>>> 最近做工程时,遇到需要循环截取字符串的情况,写一篇日记,记录处理方法. 需求 从数据库取回来的数据格式如下: 西南-零起点-香 ...

  7. shell截取字符串方法

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  8. sql和access中截取字符串的区别

    一向对数据库不熟悉,今天又遇到简单而又被忽略的问题--字符串的截取. 在Excel处理数据过程中,我们常用substring,left,mid,right来截取字符:在.NET编程中,我们常用subs ...

  9. 用jstl截取字符串

    2019独角兽企业重金招聘Python工程师标准>>> 用jstl截取字符串 jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好( ...

最新文章

  1. 关于服务器端控件的attributes属性的奇怪问题
  2. 闭包(匿名函数) php
  3. 记录一下ui设计中的网站配色
  4. iReport 5.添加修改删除jdbc
  5. PostgreSQL扫盲教程
  6. 在ASP.NET MVC中使用DropDownList
  7. c语言出勤率随机,c
  8. 查找一个数据库内的所有表的行数
  9. 创业项目筹备了两个多月,确实不容易
  10. Linux Shell编程(2)——第一个shell程序
  11. 用户输入和命令行参数
  12. Microsoft Visual Studio 6.0 安装后,弹出登录Visual SourceSafe Login弹出框!
  13. 汇编观察a++和++a
  14. 学成在线(一)项目介绍
  15. STM32单片机全自动锂电池容量电量检测放电电流电池电压ACS712
  16. 晶振匹配电容如何计算?--转载
  17. 中西方对时间的差异_中西方时间表达的认知差异
  18. 选课系统 - 数据库查询(一)
  19. 点集配准技术(ICP、RPM、KC、CPD)
  20. 二维码编码库qrencode

热门文章

  1. php jwt token过期时间,php – 动态设置laravel jwt的到期时间
  2. http 错误 404.0 - not found_python3从零学习-5.10.8、http.client—HTTP 协议客户端
  3. Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
  4. Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)
  5. QueryPerformanceFrequency用法--Windows高精度定时计数
  6. qt能使用logback_Spring boot使用logback实现日志配置
  7. android 蓝牙 鼠标 app_Razer 雷蛇 那伽梵蛇 Pro 专业版 无线蓝牙鼠标 899元
  8. 【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
  9. 【舒工强烈推荐】命令添加Git远程仓库
  10. 玻璃和水晶PBR纹理材质预设