phpでは、substr()、mb_substr()、mb_strcutの3つの関数はいずれも文字インターセプト関数ですが、substrは中国語のインターセプトをサポートしています。
substr()関数
substr(文字列,開始,長さ)
文字列は傍受するオブジェクトを表し、startは傍受する位置を表し、0は先頭を表し、正の数値はこの数値の末尾からの傍受を表し、負の数値は末尾からの傍受位置を表しますが、引き続き左から右にインターセプトされます。長さは、末尾の除外または無視される文字数を表します。 例:
コードは次のとおりです | コードをコピー |
$siteurl = 'www.bKjia.c0m'; print_r (substr($siteurl,4));終了; |
//次に return: bKjia.c0m は、先頭から 4 番目の文字から開始して、後続のすべての文字を返すことを意味します。
コードは次のとおりです | コードをコピー |
$siteurl = 'www.bKjia.c0m'; |
2 バイトの中国語文字をインターセプトしたい場合は、PHP mb_substr 関数または mb_strcut 関数を使用する必要がありますが、これら 2 つの関数は PHP 拡張機能 php_mbstring.dll コンポーネントに依存しているため、サーバーを設定する必要があります。 PHP インストール ディレクトリ内の php_mbstring.dll ファイルを Windows 2003 の C ドライブの Windows/system32 ディレクトリにコピーします。
例:
コードは次のとおりです | コードをコピー |
echo mb_substr('こうすれば文字列は文字化けしません^_^', 0, 7, 'utf-8'); |
出力: このように私の言葉
コードは次のとおりです | コードをコピー |
echo mb_strcut('こうすれば文字化けしません^_^', 0, 7, 'utf-8'); |
出力: このように
上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも文字の半分を生成しません...
コードは次のとおりです | コードをコピー |
echo mb_substr('飛花園ブログ飛花園',0,9); echo mb_substr('飛花園ブログ飛花園',0,9,'utf-8'); mb_strcut('飛花園ブログ飛花園',0,9,'utf-8'); |
別の例として、mb_substr と mb_strcut をそれぞれ使用してセグメント化されたテキストがあります。
プレーンテキスト
コード:
コードをコピー | |
$str = '私は比較的長い中国語の文字列です-'; echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8'); エコー " "; echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?> |
mb_substr: 私は比較の文字列です
mb_strcut:私は
です
この記事の概要
上記の例からわかるように、substr は英語のインターセプトにのみ適したシングル バイトのみをサポートしますが、mb_substr 関数は中国語に使用できるダブル フォントをインターセプトしますが、mb_strcut は 3 バイトです。