ホームページ >バックエンド開発 >PHPチュートリアル >4 つの PHP 中国語文字列インターセプト関数

4 つの PHP 中国語文字列インターセプト関数

WBOY
WBOYオリジナル
2016-07-25 09:04:19937ブラウズ
  1. //中国語の文字列をインターセプト
  2. function mysubstr($str, $start, $len) {
  3. $tmpstr = "";
  4. $strlen = $start + $len;
  5. for( $ i = 0; $i <$strlen; $i++) {
  6. if(ord(substr($str, $i, 1)) > 0xa0) {
  7. $tmpstr($str, $i, 2) );
  8. $i++;
  9. } else
  10. $tmpstr .= substr($str, $i, 1);
  11. }
  12. return $tmpstr;
  13. }
  14. ?>
コードをコピー

2, インターセプトutf8 でエンコードされたマルチバイト文字列

  1. < ?php
  2. //utf8文字列をインターセプト
  3. function utf8Substr($str, $from, $len)
  4. {
  5. return preg_replace('#^(?:[x00-x7F]|[ xC0 -xFF][x80-xBF]+){0,'.$from.'}'.
  6. '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0, ' .$len.'}).*#s',
  7. '$1',$str);
  8. }
  9. ?>
コードをコピー
3、

UTF-8、およびGB2312はすべて漢字インターセプトをサポートしています関数

    < ?php
  1. /*
  2. @Utf-8、gb2312 サポートされている漢字インターセプト関数
  3. @cut_str (文字列、インターセプト長、開始長、エンコーディング)
  4. @エンコーディングのデフォルトは utf-8
  5. @デフォルトの開始長は 0 です
  6. @http://bbs.it-home.org
  7. */
  8. function Cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
  9. {
  10. if($code == 'UTF-8')
  11. {
  12. $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]| [xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80] -xbf]/";
  13. preg_match_all($pa, $string, $t_string);
  14. if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0]) ] ], $start, $sublen))."...";
  15. return join('', array_slice($t_string[0], $start, $sublen));
  16. }
  17. else
  18. {
  19. $start = $ start*2;
  20. $sublen = $sublen*2;
  21. $strlen = strlen($string);
  22. $tmpstr = '';
  23. for($i=0; $i< $strlen; $i++)
  24. {
  25. if($i>=$start && $i< ($start+$sublen))
  26. {
  27. if(ord(substr($string, $i, 1))>129)
  28. {
  29. $tmpstr.= substr ( $string, $i, 2);
  30. }
  31. else
  32. {
  33. $tmpstr.= substr($string, $i, 1);
  34. }
  35. }
  36. if(ord(substr($string, $i, 1) ) )>129) $i++;
  37. }
  38. if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
  39. return $tmpstr;
  40. }
  41. }
  42. $str = "abcd が必要ですインターセプトされる文字列";
  43. echo Cut_str($str, 8, 0, 'gb2312');
  44. ?>
コードをコピー
4,
BugFree 文字インターセプト関数

< ?php
    /**
  1. * @package BugFree
  2. * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
  3. * @http://bbs.it-home.org
  4. *
  5. * 文字列の一部を返す(関数 substr() を強化)
  6. *
  7. * @author Chunsheng Wang
  8. * @param string $String 切り取る文字列
  9. * @param int $Length the返された文字列の長さ。
  10. * @param booble $Append "..." を追加するかどうか: false|true
  11. * @return string 切り取られた文字列。
  12. */
  13. function sysSubStr($String,$Length,$Append = false)
  14. {
  15. if (strlen($String) < = $Length )
  16. {
  17. return $String;
  18. }
  19. else
  20. {
  21. $I = 0;
  22. while ($I < $Length)
  23. {
  24. $StringTMP = substr($String,$I,1);
  25. if ( ord($StringTMP) >=224 )
  26. {
  27. $StringTMP = substr($String,$I,3);
  28. $I = $I + 3;
  29. }
  30. elseif( ord($StringTMP) >=192 )
  31. {
  32. $StringTMP = substr($String,$I,2);
  33. $I = $I + 2;
  34. }
  35. else
  36. {
  37. $I = $I + 1;
  38. }
  39. $StringLast[] = $StringTMP;
  40. }
  41. $StringLast = implode("",$StringLast);
  42. if($Append)
  43. {
  44. $StringLast .= "...";
  45. }
  46. return $StringLast;
  47. }
  48. }
  49. $ String = "bbs.it-home.org スクリプト スクールはあなたに捧げます;
  50. $Length = "18";
  51. $Append = false;
  52. echo sysSubStr($String,$Length,$Append);
  53. ?>
  54. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。