ホームページ >バックエンド開発 >PHPチュートリアル >中国語と英語が混在する文字列に対する PHP インターセプト関数

中国語と英語が混在する文字列に対する PHP インターセプト関数

WBOY
WBOYオリジナル
2016-07-25 08:55:041221ブラウズ
  1. /**

  2. * 中国語と英語の混合文字列をインターセプト
  3. * by bbs.it-home.org
  4. */
  5. function mb_str_split($string){
  6. # 開始後ではなく、すべての位置で分割します: ^
  7. # 終了の前ではなく: $
  8. //$string = iconv('gb2312', 'utf-8//ignore', $string);
  9. return preg_split('/(?}

  10. $string = 'q345e q345d q345c、q345d 丸鋼、q345e 丸鋼 nm360a 耐摩耗性プレート、欧州規格 s355 低合金プレート bs700mc 自動車用プレート、自動車用 qste460tm 構造用鋼、船舶プレート ah36/eh36/dh36、米国標準コンテナプレート耐候性鋼ばね鋼';

  11. //$charlist = mb_str_split($string);
  12. echo mb_chunk_split($string, 30, '..', true); '
    ';
  13. echo mb_chunk_split($string, 10, '
    ');
  14. function mb_chunk_split($string, $length, $end = '..', $once = false){
  15. / /$string = iconv('gb2312', 'utf-8//ignore', $string);
  16. $i = 0;
  17. $once_array = array ();
  18. foreach($charlist as $value){
  19. /* if($once){
  20. if(($i + $j) > $length){
  21. $i--;可能です
  22. ブレーク;
  23. }
  24. }else{
  25. if(($i + $j) >= $length){
  26. $once_array[] = implode('', array_slice($charlist, $once_leng, $i)) ;
  27. $once_leng += $i;
  28. $i = $j = 0;
  29. } */
  30. if(($i + $j) >= $length){
  31. if($once)
  32. return implode ('', array_slice($charlist, 0, $i-1)) . (count($charlist) <= $i ? '' : $end); = $j = 0;
  33. }
  34. if(ord($value) > 127)
  35. $j++; //中国語は幅 2 としてカウントします
  36. /*if($value == ',')
  37. $j- - ;*/
  38. $i++; }
  39. //パディング終了
  40. if(array_sum($once_array) < count($charlist))
  41. $once_array[] = $i
  42. $str_arr = array(); $once_leng = 0;
  43. foreach($once_array as $value){
  44. $str_arr[] = implode('', array_slice($charlist, $once_leng, $value));
  45. $once_leng += $value;
  46. return implode($end, $str_arr);
  47. //return implode('', array_slice($charlist, 0, $i)) . (count($charlist) <= $i ? '' : $end) ;
  48. }
  49. ?

  50. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。