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

PHP 中国語文字列インターセプト PHP 中国語文字列インターセプト

WBOY
リリース: 2016-07-25 09:04:16
オリジナル
903 人が閲覧しました
  1. /**

  2. GB2312 エンコードに適した @Intercept 中国語文字列
  3. @http://bbs.it-home.org
  4. */
  5. function FSubstr($title,$start,$len="",$magic=true)
  6. {
  7. $length = 0;
  8. if($len == "") $len = strlen($title);

  9. // 不当な位置であると判断開始

  10. if($start > 0)
  11. {
  12. $cnum = 0;
  13. for($i=0;$i{
  14. if(ord(substr($title,$i,1)) >= 128) $cnum + +;
  15. }
  16. if($cnum%2 != 0) $start--;

  17. unset($cnum);

  18. }

  19. if( strlen($title)<=$len) return substr($title,$start,$len);

  20. $alen = 0;

  21. $blen = 0;

  22. $realnum = 0;

  23. for($i=$start;$i

  24. {
  25. $ctype = 0;
  26. $ cstep = 0;
  27. $cur = substr($title,$i,1);
  28. if($cur == "&")
  29. {
  30. if(substr($title,$i,4) == "< ")
  31. {
  32. $cstep = 4;
  33. $length += 4;
  34. $i += 3;
  35. $realnum ++;
  36. if($magic)
  37. {
  38. $alen ++;
  39. }
  40. }
  41. else if(substr($title,$i,4) == ">")
  42. {
  43. $cstep = 4;
  44. $length += 4;
  45. $i += 3;
  46. $realnum ++;
  47. if( $magic)
  48. {
  49. $alen ++;
  50. }
  51. }
  52. else if(substr($title,$i,5) == "&")
  53. {
  54. $cstep = 5;
  55. $length += 5;
  56. $i += 4;
  57. $realnum ++;
  58. if($magic)
  59. {
  60. $alen ++;
  61. }
  62. }
  63. else if(substr($title,$i,6) == """ )
  64. {
  65. $cstep = 6;
  66. $length += 6;
  67. $i += 5;
  68. $realnum ++;
  69. if($magic)
  70. {
  71. $alen ++;
  72. }
  73. }
  74. else if (substr($title,$i,6) == "'")
  75. {
  76. $cstep = 6;
  77. $length += 6;
  78. $i += 5;
  79. $realnum ++;
  80. if($magic )
  81. {
  82. $alen ++;
  83. }
  84. }
  85. else if(preg_match("/(d+);/i",substr($title,$i,8),$match))
  86. {
  87. $ cstep = strlen($match[0]);
  88. $length += strlen($match[0]);
  89. $i += strlen($match[0])-1;
  90. $realnum ++;
  91. if( $magic)
  92. {
  93. $blen ++;
  94. $ctype = 1;
  95. }
  96. }
  97. }else{
  98. if(ord($cur)>=128)
  99. {
  100. $cstep = 2;
  101. $length + = 2;
  102. $i += 1;
  103. $realnum ++;
  104. if($magic)
  105. {
  106. $blen ++;
  107. $ctype = 1;
  108. }
  109. }else{
  110. $cstep = 1;
  111. $長さ +=1;
  112. $realnum ++;
  113. if($magic)
  114. {
  115. $alen++;
  116. }
  117. }
  118. }

  119. if($magic)

  120. {
  121. if(( $blen*2+$alen) == ($len*2)) ブレーク;
  122. if(($blen*2+$alen) == ($len*2+1))
  123. {
  124. if($ctype = = 1)
  125. {
  126. $length -= $cstep;
  127. break;
  128. }else{
  129. break;
  130. }
  131. }
  132. }else{
  133. if($realnum == $len) Break;
  134. }
  135. }
  136. unset($cur);

  137. unset($alen);
  138. unset($blen);
  139. unset($realnum);
  140. unset($ctype);
  141. unset($cstep);< /p>
  142. return substr($title,$start,$length);

  143. }
  144. ?>

复制代

复制以上代価,在你的php平台途中でテストを行ったり、多動ハンドを実行したり、レベルを上げることができます。 程序员之家、您学习路上の好友。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート