php兼容编码,PHP截取字符串编码(兼容utf-8和gb2312)
昨天晚上和今天上午看了字符編碼的問題,還有一些別人截取字符串的函數,自己也寫了一個,兼容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=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兼容编码,PHP截取字符串编码(兼容utf-8和gb2312)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 自旋锁,Linux内核自旋锁使用
- 下一篇: oracle sql 表个数,【orac