PHP截取中英文混合字符
2024-09-07 03:08:38
<?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); ?>
最新文章
- Linux网络驱动--snull
- squid 2.7 配置与安装
- java并发编程(3):ThreadLocal
- Android高仿微信(一)——如何消除启动时的白屏
- TLV简介
- 深入理解C#泛型
- ORACLE R12 MOAC
- 检查REDO日志相关信息并生成HTML文件的脚本
- 异常Crash之 NSGenericException,NSArray was mutated while being enumerated
- js面向对象的学习笔记九(BOM 与 DOM 经常使用的属性分析)
- BZOJ 2738: 矩阵乘法 [整体二分]
- mysql的内建日期处理函数
- Mysql加锁过程详解(9)-innodb下的记录锁,间隙锁,next-key锁
- python高级编程
- declaration may not appear after executable statement in block
- Java的家庭记账本程序(A)
- 清除数据库表、外键、存储过程SQL
- CAD扩展属性的提取--FME方式
- Discrete Square Roots UVALive - 4270(拓展欧几里得)
- iOS tag的使用
热门文章
- Java创建和解析Json数据方法(三)——json-lib包的使用
- python--文本处理1
- 邁向IT專家成功之路的三十則鐵律 鐵律十五:IT人生活之道-赤子之心
- java高级编程-使用反射强制给private字段赋值
- Windows10下Apache2.4配置Django
- DICOM医学图像处理:Deconstructed PACS之Orthanc
- linux下的C语言开发(网络编程)
- Redis安装过程
- G 全然背包
- linux中ERROR: The partition with /var/lib/mysql is too full!解决的方法