PHP 字符串编码截取函数(兼容utf-8和gb2312)
2015-01-24信息快讯网
昨天晚上和今天上午看了字符编码的问题,还有一些别人截取字符串的函数,自己也写了一个,兼容utf-8和gb2312的
//截取字符串长度。支持utf-8和gb2312编码。若为gb2312,先将其转为utf-8,在utf-8的基础上截取然后再转换回来 function cut_string($str,$from=1,$length=10,$code='utf-8',$rear='...'){ if($code!='utf-8'){//总是将字符串转为utf-8编码 $str=iconv($code,'utf-8',$str); } $str_len=mb_strlen($str,'utf-8');//字符串的长度 if($from>$str_len){//如果截取开始位置大于字符串长度,截取后面$length个 $from=$str_len-$length+1; $from=($from<1?1:$from); } //兼容ucs-4编码 $i=0;//字节计数 $from_i=0;//开始截取的字节位置 $from_len=0;//开始截取的字符位置 $tag=true;//标志$from_len是否已经被赋值 for($temp_len=0;($temp_len-$from_len<$length)||$tag;$temp_len++){ $byte_code=ord(substr($str,$i,1));//一个字节的编码 if($temp_len+1==$from){//记录开始截取的开始字节位置 $from_i=$i;$from_len=$temp_len;$tag=false; } if($byte_code>=0&&$byte_code<128){//字符是占用几个字节,utf-8是变长编码,根据每个字符的第一个字节可判断出该字符占几个字节 $i++; } if($byte_code>191&&$byte_code<224){ $i+=2; } if($byte_code>223&&$byte_code<240){ $i+=3; } if($byte_code>239&&$byte_code<248){ $i+=4; } if($byte_code>248&&$byte_code<252){ $i+=5; } if($byte_code>252&&$byte_code<255){ $i+=6; } } return iconv('utf-8',$code,substr($str,$from_i,$i-$from_i).$rear); }
php iconv() : Detected an illegal character in input string
php小偷相关截取函数备忘
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
smarty中先strip_tags过滤html标签后truncate截取文章运用
学习php笔记 字符串处理
php+jquery编码方面的一些心得(utf-8 gb2312)
php下清空字符串中的HTML标签的代码
PHP下对字符串的递增运算代码
PHP 截取字符串专题集合
UCenter中的一个可逆加密函数authcode函数代码
php UTF-8、Unicode和BOM问题
PHP生成UTF8文件的方法
PHP iconv 解决utf-8和gb2312编码转换问题
php截取utf-8中文字符串乱码的解决方法
PHP 截取字符串函数整理(支持gb2312和utf-8)
php 木马的分析(加密破解)
apache2.2.4+mysql5.0.77+php5.2.8安装精简
PHP mb_convert_encoding 获取字符串编码类型实现代码
php 随机生成10位字符代码
php auth_http类库进行身份效验
php mssql 日期出现中文字符的解决方法
PHP 截取字符串 分别适合GB2312和UTF8编码情况
PHP HTML代码串截取代码
中英文字符串翻转函数
PHP5+UTF8多文件上传类
php chr() ord()中文截取乱码问题解决方法
jq的get传参数在utf-8中乱码问题的解决php版
PHP写入WRITE编码为UTF8的文件的实现代码
php下检测字符串是否是utf8编码的代码
PHP截取汉字乱码问题解决方法mb_substr函数的应用
php中文字符截取防乱码