php函數substr、mb_substr、mb_strcut截取中文比較

1、函數說明
    substr、mb_substr、mb_strcut這三個函數都用來截取字符串,所不一樣的是:substr是最簡單的截取,沒法適應中文;mb_substr是按字來切分字符串,而mb_strcut是按字節來切分字符串,截取中文都不會產生半個字符的現象。
    這三個函數的前三個參數徹底一致,即:
第一個參數是操做對象
第二個參數是截取的起始位置
第三個參數是截取的數量
    mb_substr和mb_strcut還有第四個參數:第四個參數能夠根據不一樣的字符集進行設置php

  1. <?php  html

  2.   

  3. //對待一個UTF8的中文字符是3個長度    函數

  4. //對待一個gbk的中文字符是2個長度    測試

  5. header("content-Type:text/html;charset=utf-8");    this

  6.     

  7. //設置內部編碼    編碼

  8. mb_internal_encoding('UTF-8');    spa

  9.     

  10. //測試     orm

  11. $cn_str="釣魚島是中國的hehe";    htm

  12. $en_str="this is just a test";    對象

  13.     

  14.     

  15. //使用substr    

  16. echo substr($cn_str,0,3).'<br/>'//釣    

  17. echo substr($en_str,0,3).'<br/><br/>';   //thi    

  18.     

  19.     

  20. //使用mbsubstr()    

  21. echo "mb_substr-3:".mb_substr($cn_str,0,3).'<br/>';   //釣魚島    按照字來劃分     

  22. echo "substr-3:".substr($cn_str,0,3).'<br/>';//釣   按照字節來劃分      

  23. echo "mb_strcut-3:".mb_strcut($cn_str,0,3).'<br/><br/>'//釣   按照字節來劃分    

  24.   

  25.   

  26. echo "mb_substr-4:".mb_substr($cn_str,0,4).'<br/>';   //釣魚島    按照字來劃分  

  27. echo "substr-4:".substr($cn_str,0,4).'<br/>'//釣   按照字節來劃分(出現亂碼)      

  28. echo "mb_strcut-4:".mb_strcut($cn_str,0,4).'<br/><br/>'//釣   按照字節來劃分(不會出現亂碼)    

  29.   

  30.   

  31.   

  32.   

  33. echo strlen($cn_str).'<br/>';   //26    

  34. echo mb_strlen($cn_str).'<br/>';  //12    

  35. echo iconv_strlen($cn_str).'<br/>';//26    

  36.   

  37. ?>  

3、結論        substr、mb_strcut表現都不夠理想,mb_substr能夠正常使用,但前提是要安裝php擴展庫,不然就要本身寫一個適應各類狀況的截取函數了。

相關文章
相關標籤/搜索