PHP截取中英文及标点符号混合的字符串函数
来源:互联网 发布:win10服务优化 编辑:程序博客网 时间:2024/04/29 07:20
////////////////////////////////////////////////////////////////////
// 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 0
- PHP截取中英文及标点符号混合的字符串函数
- php截取中英文混合字符串
- PHP获取中英文混合字符串长度及截取
- php截取中英文混合字符串函数以及用法
- C#判断中英文混合字符串长度及截取函数
- PHP中字符串超长的中英文混合截取
- php截取中英文混合字符串方法
- php混合字符串长度和截取 中英文
- C#中英文混合字符串截取函数
- sql 中英文 混合 字符串截取函数
- 截取中英文混合字符串
- 截取中英文混合字符串
- 中英文混合字符串截取
- 中英文混合字符串截取
- Oracle截取中英文混合字符串的处理
- 如何正确截取中英文混合的字符串?
- .NET 截取中英文混合的字符串。
- PHP 中英文混合排版中处理字符串常用的函数
- spring配置文件路径——如何使用表达式
- CSTRING的成员函数详解
- Hexo博客配置优化
- 多线程精要
- 初探android的Camera和Matrix
- PHP截取中英文及标点符号混合的字符串函数
- 谷歌求职记:我花了八个月准备谷歌面试
- SourceTree搭建git仓库
- TensorFlow + CUDA 开发环境配置的坑与丘
- 进程和线程的区别
- laravel 框架安装 注意事项
- 信仰的力量-血战钢锯岭
- C# String.Format格式说明
- python中使用print输出中文