自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP截取utf-8字符串的具體方法介紹

開發(fā) 后端
UTF-8編碼的字符可能由1~3個(gè)字節(jié)組成,我們在這里將為大家具體講解有關(guān)PHP截取utf-8字符串的方法,希望對大家有所幫助。

我們對PHP語言都已經(jīng)不再陌生,它是一個(gè)很常用的語言。今天我們將向大家介紹的是有關(guān)PHP截取utf-8字符串的相關(guān)方法。為了支持多語言,數(shù)據(jù)庫里的字符串可能保存為UTF-8編碼,在網(wǎng)站開發(fā)中可能需要用php截取字符串的一部分。為了避免出現(xiàn)亂碼現(xiàn)象,編寫如下的UTF-8字符串截取函數(shù)。

#t#關(guān)于utf-8的原理請看 UTF-8 FAQ

UTF-8編碼的字符可能由1~3個(gè)字節(jié)組成, 具體數(shù)目可以由第一個(gè)字節(jié)判斷出來。(理論上可能更長,但這里假設(shè)不超過3個(gè)字節(jié))
第一個(gè)字節(jié)大于224的,它與它之后的2個(gè)字節(jié)一起組成一個(gè)UTF-8字符
第一個(gè)字節(jié)大于192小于224的,它與它之后的1個(gè)字節(jié)組成一個(gè)UTF-8字符
否則第一個(gè)字節(jié)本身就是一個(gè)英文字符(包括數(shù)字和一小部分標(biāo)點(diǎn)符號(hào))。

以前為某網(wǎng)站設(shè)計(jì)的代碼(也是現(xiàn)在用在首頁的長度截取的函數(shù))

PHP截取utf-8字符串的代碼示例:

  1. < ?php // Cut_Str;  
  2. //$sourcestr 是要處理的字符串  
  3. //$cutlength 為截取的長度(即字?jǐn)?shù))  
  4. function cut_str($sourcestr,$cutlength)  
  5. {  
  6. $returnstr=”;  
  7. $i=0;  
  8. $n=0;  
  9. $str_length=strlen($sourcestr);//字符串的字節(jié)數(shù)  
  10. while (($n<$cutlength) and ($i<=$str_length))  
  11. {  
  12. $temp_str=substr($sourcestr,$i,1);  
  13. $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii碼  
  14. if ($ascnum>=224) //如果ASCII位高與224,  
  15. {  
  16. $returnstr=$returnstr.substr($sourcestr,$i,3); 
    //根據(jù)UTF-8編碼規(guī)范,將3個(gè)連續(xù)的字符計(jì)為單個(gè)字符  
  17. $i=$i+3; //實(shí)際Byte計(jì)為3  
  18. $n++; //字串長度計(jì)1  
  19. }  
  20. elseif ($ascnum>=192) //如果ASCII位高與192,  
  21. {  
  22. $returnstr=$returnstr.substr($sourcestr,$i,2);
     //根據(jù)UTF-8編碼規(guī)范,將2個(gè)連續(xù)的字符計(jì)為單個(gè)字符  
  23. $i=$i+2; //實(shí)際Byte計(jì)為2  
  24. $n++; //字串長度計(jì)1  
  25. }  
  26. elseif ($ascnum>=65 && $ascnum<=90) 
    //如果是大寫字母,  
  27. {  
  28. $returnstr=$returnstr.substr($sourcestr,$i,1);  
  29. $i=$i+1; //實(shí)際的Byte數(shù)仍計(jì)1個(gè)  
  30. $n++; //但考慮整體美觀,大寫字母計(jì)成一個(gè)高位字符  
  31. }  
  32. else //其他情況下,包括小寫字母和半角標(biāo)點(diǎn)符號(hào),  
  33. {  
  34. $returnstr=$returnstr.substr($sourcestr,$i,1);  
  35. $i=$i+1; //實(shí)際的Byte數(shù)計(jì)1個(gè)  
  36. $n=$n+0.5; //小寫字母和半角標(biāo)點(diǎn)等與半個(gè)高位字符寬…  
  37. }  
  38. }  
  39. if ($str_length>$cutlength){  
  40. $returnstr = $returnstr . “…”;
    //超過長度時(shí)在尾處加上省略號(hào)  
  41. }  
  42. return $returnstr;  

以上就是PHP截取utf-8字符串的相關(guān)方法總結(jié),希望對大家有所幫助。

責(zé)任編輯:曹凱 來源: 百度博客
相關(guān)推薦

2009-12-01 09:52:40

PHP過濾字符串

2009-11-26 16:26:32

PHP字符串mbstr

2009-11-23 15:10:28

PHP獲取當(dāng)前url

2010-03-11 09:56:57

Python字符串操作

2009-11-30 11:24:49

PHP將EXCEL導(dǎo)入

2009-11-24 17:25:00

PHP二維數(shù)組排序

2009-11-30 18:26:06

PHP字符串替換

2016-12-13 10:13:18

PHPUTF-8實(shí)踐

2009-11-26 16:43:11

PHP截取中文字符串

2009-12-31 15:05:00

Silverlight

2009-12-16 15:04:26

Ruby實(shí)現(xiàn)strea

2009-12-31 14:12:40

Silverlight

2010-04-27 12:26:21

Unix字符串

2009-12-03 18:23:23

2009-12-01 13:41:49

靜態(tài)路由設(shè)置

2009-12-01 09:18:50

PHP分割字符串

2009-11-18 18:02:19

PHP字符串截取

2009-06-30 14:16:37

截取字符串

2010-11-26 11:34:32

MySQL截取字符串函

2009-11-25 17:14:45

PHP安裝為Apach
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)