ホームページ  >  記事  >  バックエンド開発  >  GBK文字列のインターセプトに関連する問題~

GBK文字列のインターセプトに関連する問題~

WBOY
WBOYオリジナル
2016-06-13 13:27:35889ブラウズ

GBK 文字列のインターセプトの問題~~~~
これは GBK 文字列をインターセプトする関数です:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
function  gb_substr( $str ,  $len ){        
      $count  = 0;        
      for ( $i =0;  $i < strlen ( $str );  $i ++){        
          if ( $count  ==  $len )  break ;        
          if (preg_match( "/[\x80-\xff]/" ,  substr ( $str ,  $i , 1))){
        ++ $i ;
          }        
          ++ $count ;                
      }        
      return   substr ( $str , 0,  $i );        
}



私の質問は、GBK と Is' です。 GB2312 の各文字は間違いなく 2 バイトですか?あとはインターセプトされる長さ *2 を使って終了するだけですか?
たとえば、3 文字をインターセプトしたい: 3*2=6、つまり 6 の位置をインターセプトしたいとします。

そうですか?

-----解決策---------
mb シリーズ関数を使用すると、GBK は 2 つの非 ASCII 文字を扱いますが、ASCII は 1 バイトのままです。
------解決策------------------
間違っています。ASCII コードを含む数字や文字が含まれている可能性があります。

ディスカッション
これは GBK 文字列をインターセプトする関数です:
PHP コード

function gb_substr( $str , $len ){
$count = 0;
for ( $i =0; $i if ( $count == $len ) ブレーク……
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。