<?php

////////////////////////////////////////////////////////////////////
// PHP截取中英文及标点符号混合的字符串函数(绝对不会出现乱码)
// 本程序在utf-8、gb2312中测试通过。使用者自行测试big5。
// 函数 left( 源字符串, 截取指定的字符串个数, 编码(可省略,默认为utf-8) )
//////////////////////////////////////////////////////////////////// function left($str, $len, $charset="utf-8")
{
//如果截取长度小于等于0,则返回空
if( !is_numeric($len) or $len <= 0 )
{
return "";
} //如果截取长度大于总字符串长度,则直接返回当前字符串
$sLen = strlen($str);
if( $len >= $sLen )
{
return $str;
} //判断使用什么编码,默认为utf-8
if ( strtolower($charset) == "utf-8" )
{
$len_step = 3; //如果是utf-8编码,则中文字符长度为3
}else{
$len_step = 2; //如果是gb2312或big5编码,则中文字符长度为2
} //执行截取操作
$len_i = 0;
//初始化计数当前已截取的字符串个数,此值为字符串的个数值(非字节数)
$substr_len = 0; //初始化应该要截取的总字节数 for( $i=0; $i < $sLen; $i++ )
{
if ( $len_i >= $len ) break; //总截取$len个字符串后,停止循环
//判断,如果是中文字符串,则当前总字节数加上相应编码的中文字符长度
if( ord(substr($str,$i,1)) > 0xa0 )
{
$i += $len_step - 1;
$substr_len += $len_step;
}else{ //否则,为英文字符,加1个字节
$substr_len ++;
}
$len_i ++;
}
$result_str = substr($str,0,$substr_len );
return $result_str;
} ////////////////////////////////////////////////////////////////////
// 调用示例
////////////////////////////////////////////////////////////////////
$str = "空格 也算一个字符";
echo "截取后的字符串:".left($str,14); ?>
  
  

最新文章

  1. Linux网络驱动--snull
  2. squid 2.7 配置与安装
  3. java并发编程(3):ThreadLocal
  4. Android高仿微信(一)——如何消除启动时的白屏
  5. TLV简介
  6. 深入理解C#泛型
  7. ORACLE R12 MOAC
  8. 检查REDO日志相关信息并生成HTML文件的脚本
  9. 异常Crash之 NSGenericException,NSArray was mutated while being enumerated
  10. js面向对象的学习笔记九(BOM 与 DOM 经常使用的属性分析)
  11. BZOJ 2738: 矩阵乘法 [整体二分]
  12. mysql的内建日期处理函数
  13. Mysql加锁过程详解(9)-innodb下的记录锁,间隙锁,next-key锁
  14. python高级编程
  15. declaration may not appear after executable statement in block
  16. Java的家庭记账本程序(A)
  17. 清除数据库表、外键、存储过程SQL
  18. CAD扩展属性的提取--FME方式
  19. Discrete Square Roots UVALive - 4270(拓展欧几里得)
  20. iOS tag的使用

热门文章

  1. Java创建和解析Json数据方法(三)——json-lib包的使用
  2. python--文本处理1
  3. 邁向IT專家成功之路的三十則鐵律 鐵律十五:IT人生活之道-赤子之心
  4. java高级编程-使用反射强制给private字段赋值
  5. Windows10下Apache2.4配置Django
  6. DICOM医学图像处理:Deconstructed PACS之Orthanc
  7. linux下的C语言开发(网络编程)
  8. Redis安装过程
  9. G 全然背包
  10. linux中ERROR: The partition with /var/lib/mysql is too full!解决的方法