文字列セグメンテーション utf-8 (中国語、日本語、韓国語などをサポート、効率的)
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-25 09:08:02
mb_substr と mb_strlen は非効率すぎるため、このコードが使用されます。
オリジナルではなく、主な原則は UTF-8 のエンコード特性に基づいています
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx を使用して文字境界を取得し、それによって単語が占めるバイト数を決定し、それを配列に処理します。 この関数は、mb_substr よりも 10 倍効率的です。このタイプの開発過程で、この関数の効率を比較しました。 2 つ詳細に説明すると、この関数が明らかに優れています。
- function str_split_utf8($str) {
- // 文字列の各文字を配列に配置します
- $split = 1;
- $array = strlen($str);
- for ( $ i = 0; $i < $len;
- $value = ord($str[$i]){
- if($value >= 0xC0 && $value < ;= 0xDF)
- $split = 2;
- elseif($value >= 0xE0 && $value <= 0xEF)
- elseif($value >= 0xF0 && $value <= 0xF7)
- $split = 4;
- elseif($value >= 0xF8 && $value $split = 5;
- elseif($value >= 0xFC)
-
- } else {
- $split = 1;
- }
- $key = '';
- for ( $j = 0; $j < $split; ++$j, ++$i ) {
- $key .= $str[$ i];
- }
- $array[] = $key;
- }
- return $array
- }
-
-
-
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31