MB_STRCUTは、PHPでマルチバイトキャラクター(中国語、日本、韓国など)を扱う際に非常に実用的な機能です。 substrとは異なり、マルチバイト文字が切り捨てられないことを保証し、したがって、文字化けの問題を回避します。この記事では、 MB_STRCUTを使用してマルチバイト文字列を傍受し、実際のケースと組み合わせて実証する方法について詳しく説明します。
開始する前に、 MB_STRCUTとMB_SUBSTRの違いを簡単に理解しましょう。
MB_SUBSTRは、文字の数によって傍受されます。
MB_STRCUTはバイトの長さによって傍受されますが、文字が切り捨てられないことを保証します(つまり、漢字の一部のみが傍受されません)。
どちらも指定された文字エンコードをサポートします。
つまり、 MB_STRCUTは、データベースのフィールドの長さの制限、概要などの制限など、バイトレベルでテキストを処理するのに適しています。
string mb_strcut(string $string, int $start, int $length = null, string $encoding = null)
$文字列:処理する文字列。
$ start :start position(バイトで計算);
$の長さ:傍受するバイト数。
$エンコーディング:文字エンコード(UTF-8、GBKなど)、オプション。
<?php
$str = "こんにちは,世界!";
$result = mb_strcut($str, 0, 6, "UTF-8");
echo $result; // 出力:こんにちは
?>
説明:各漢字はUTF-8エンコーディングの下で3バイトを占有するため、6バイトは正確に2つの漢字です。
サブストールを使用して中国語を傍受すると、文字化けのコードが発生する傾向があります。
<?php
$str = "こんにちは,世界!";
echo substr($str, 0, 5); // 可能出力乱码
?>
この問題を回避するためにMB_STRCUTに変更してください。
<?php
$str = "こんにちは,世界!";
echo mb_strcut($str, 0, 5, "UTF-8"); // 出力:あなた
?>
記事の概要を傍受する必要がある場合は、次の方法を使用できます。
<?php
$content = "公式ウェブサイトへようこそ:https://gitbox.net/blog/php-mb_strcut-use";
$summary = mb_strcut($content, 0, 60, "UTF-8");
echo $summary . "...";
?>
これにより、Carled CodeなしでWebページに固定長の要約が安全に表示されます。
マルチバイト文字は、異なるエンコーディングの下で異なるバイトの長さを占めるため、動的処理にMB_STRLENとMB_STRCUTを使用することをお勧めします。
<?php
function safe_cut($str, $maxBytes, $encoding = "UTF-8") {
return mb_strcut($str, 0, $maxBytes, $encoding);
}
?>
これにより、次のような柔軟にバイト制限を設定できます。
echo safe_cut("これはですPHP文字列処理の例", 9); // 出力:これはです
MB_STRCUTはバイトレベルの操作であるため、データを保存または送信する際の正確な長さの制御に特に適しています。
文字列をエンコードまたはフィルタリングすることはなく、 htmlspecialcharsなどの関数と組み合わせて使用する必要があります。
サーバーにmbstring拡張機能が有効になり、 phpinfo()を介して表示できることを確認してください。
MB_STRCUTは、特にバイト長の正確な制御が必要なシナリオでは、マルチバイト文字列を処理するためのPHPの重要なツールです。開始位置と長さを合理的に設定し、コーディング設定を組み合わせることにより、コードの問題を簡単に回避し、プログラムの堅牢性を向上させることができます。開発中のMB_STRCUTを最大限に活用してください。これにより、多言語の文字列を扱うときに快適になります。