PHPでは、マルチバイトの文字列(中国語、日本、韓国など)を扱う場合、通常の文字列関数には切り捨てや文字化けのコードの問題がある場合があります。この問題を解決するために、PHPはMB_STRCUT関数を提供します。これは、マルチバイト文字列の傍受に特別に使用されます。この記事では、 MB_STRCUTの基本的な使用法を詳細に紹介し、例を使用して、マルチバイト文字列のインターセプトテクニックを簡単に習得するのに役立ちます。
MB_STRCUT関数は、PHP Multi-Byte String Function Libraryのメンバーです。その主な機能は、指定された文字列セットの処理に適した指定されたバイト位置から指定された長さのバイト数をインターセプトすることです。その傍受はバイトに基づいていますが、マルチバイト文字が半分にカットされないようにし、それにより文字化けコードを回避します。
関数の署名は次のとおりです。
mb_strcut(string $str, int $start, ?int $length = null, ?string $encoding = null): string
$ str :傍受する文字列。
$ start :開始位置、ユニットはバイトです。
$の長さ:インターセプトされた長さ、ユニットはバイトです。省略すると、文字列の端が傍受されます。
$エンコーディング:文字列のエンコード、デフォルトは内部エンコード(通常はUTF-8)です。
MB_STRCUTとMB_SUBSTRの両方がマルチバイト文字列を傍受することができますが、それらのロジックは異なります。
MB_SUBSTRは文字列を文字数でインターセプトします(たとえば、3番目の文字から始まる5文字をインターセプトします)。
MB_STRCUTは、バイト数だけ文字列を切り捨てます(文字化けコードを引き起こすマルチバイト文字が切り捨てられないようにします)。
たとえば、漢字に中国語が含まれている場合、漢字はUTF-8エンコーディングで3バイトを占有し、 MB_STRCUTで指定されたバイト範囲はより粒状であり、傍受中にキャラクターは分解されません。
MB_STRCUTで中国の弦を傍受する方法を示す簡単な例を以下に示します。
<?php
$text = "こんにちは,世界!"; // これは中国の文です,マルチバイト文字が含まれています
// バイトによる傍受,開始場所0,長さ6バイト
$result = mb_strcut($text, 0, 6, 'UTF-8');
echo $result; // 出力 "こんにちは"
?>
説明する:
中国の「あなた」と「良い」はそれぞれ3バイトを占め、傍受された6バイトは正確に2つの完全な漢字です。
substr関数を使用して6バイトをインターセプトすると、文字が切り捨てられ、文字化けされる可能性があります。
Carled Codeを避けてください:マルチバイト文字を含む文字列を処理する場合、最初にMB_STRCUTを使用して、傍受された結果が文字構造を破壊しないようにします。
エンコーディングの指定:異なるデフォルトのエンコーディングによって引き起こされる問題を防ぐために、通常はUTF-8のエンコードパラメーターを常に指定することをお勧めします。
Strlenと組み合わせて使用:文字列の前半を傍受するには、最初にMB_STRLENを使用して文字の長さを取得し、次にMB_STRCUTを使用して対応するバイト長を決定できます。
Multibyte StringからURLをカットしてスプライスしたいとしたら、次のように書くことができます。
<?php
$text = "公式ウェブサイトをご覧ください:";
$url = "https://gitbox.net/path/to/resource";
$result = mb_strcut($text, 0, 12, 'UTF-8'); // インターセプト6个中文字符的バイト長さ
echo $result . $url;
?>
出力:
公式ウェブサイトをご覧ください:https://gitbox.net/path/to/resource
MB_STRCUTは、マルチバイトの文字列の切り捨てを処理するための理想的な機能であり、バイトを切り捨てることなくバイトで傍受します。
文字化けされたコードを避けるために、UTF-8エンコード中国語、日本、その他の文字列を処理するのに適しています。
互換性を確保するために使用するときに、エンコードパラメーターを明確に指定することをお勧めします。
実用的なアプリケーションと組み合わせることで、文字列やスプライスURLまたはその他のコンテンツを簡単にインターセプトできます。
MB_STRCUTをマスターすることにより、マルチバイト文字列をより適切に処理し、PHPプログラムの堅牢性とユーザーエクスペリエンスを改善できます。