PHP截取utf-8字串的具體方法介紹_PHP教程

來源:互聯網
上載者:User
我們對關於utf-8的原理請看 UTF-8 FAQ

UTF-8編碼的字元可能由1~3個位元組組成, 具體數目可以由第一個位元組判斷出來。(理論上可能更長,但這裡假設不超過3個位元組)
第一個位元組大於224的,它與它之後的2個位元組一起組成一個UTF-8字元
第一個位元組大於192小於224的,它與它之後的1個位元組組成一個UTF-8字元
否則第一個位元組本身就是一個英文字元(包括數字和一小部分標點符號)。

以前為某網站設計的代碼(也是現在用在首頁的長度截取的函數)

PHP截取utf-8字串的程式碼範例:

 
  1. < ?php // Cut_Str;
  2. //$sourcestr 是要處理的字串
  3. //$cutlength 為截取的長度(即字數)
  4. function cut_str($sourcestr,$cutlength)
  5. {
  6. $returnstr=”;
  7. $i=0;
  8. $n=0;
  9. $str_length=strlen($sourcestr);//字串的位元組數
  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);
    //根據UTF-8編碼規範,將3個連續的字元計為單個字元
  17. $i=$i+3; //實際Byte計為3
  18. $n++; //字串長度計1
  19. }
  20. elseif ($ascnum>=192) //如果ASCII位高與192,
  21. {
  22. $returnstr=$returnstr.substr($sourcestr,$i,2);
    //根據UTF-8編碼規範,將2個連續的字元計為單個字元
  23. $i=$i+2; //實際Byte計為2
  24. $n++; //字串長度計1
  25. }
  26. elseif ($ascnum>=65 && $ascnum<=90)
    //如果是大寫字母,
  27. {
  28. $returnstr=$returnstr.substr($sourcestr,$i,1);
  29. $i=$i+1; //實際的Byte數仍計1個
  30. $n++; //但考慮整體美觀,大寫字母計成一個高位字元
  31. }
  32. else //其他情況下,包括小寫字母和半形標點符號,
  33. {
  34. $returnstr=$returnstr.substr($sourcestr,$i,1);
  35. $i=$i+1; //實際的Byte數計1個
  36. $n=$n+0.5; //小寫字母和半形標點等與半個高位字元寬…
  37. }
  38. }
  39. if ($str_length>$cutlength){
  40. $returnstr = $returnstr . “…”;
    //超過長度時在尾處加上省略符號
  41. }
  42. return $returnstr;
  43. }

以上就是PHP截取utf-8字串的相關方法總結,希望對大家有所協助。


http://www.bkjia.com/PHPjc/446272.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446272.htmlTechArticle我們對 關於utf-8的原理請看 UTF-8 FAQ UTF-8編碼的字元可能由1~3個位元組組成, 具體數目可以由第一個位元組判斷出來。(理論上可能更長,但這裡...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.