現在の位置: ホーム> 最新記事一覧> mb_convert_caseでマルチバイト文字セット(UTF-8など)を処理する方法

mb_convert_caseでマルチバイト文字セット(UTF-8など)を処理する方法

gitbox 2025-05-29

なぜStrtolowerまたはStrtoupperの代わりにMB_Convert_Caseを使用するのですか?

標準的なStrtolowerおよびStrtoupper機能は、ASCII文字のみをサポートしています。 UTF-8エンコードなどの文字を処理すると、英語以外の文字を正しく変換することはできません。例えば:

 $text = "Γει? Σου Κ?σμε"; // ギリシャ語
echo strtoupper($text); // 出力が正しくない場合があります

この時点で、 MB_CONVET_CASEが必要です。

 $text = "Γει? Σου Κ?σμε";
echo mb_convert_case($text, MB_CASE_UPPER, "UTF-8"); // 大文字に正しく変換します

パラメーターの詳細な説明

mb_convert_caseの関数プロトタイプは次のとおりです。

 string mb_convert_case(string $string, int $mode, ?string $encoding = null)
  • $文字列:変換する文字列。

  • $モード:変換モード、主に:

    • MB_Case_upper :大文字に変換します

    • MB_Case_lower :小文字に変換します

    • mb_case_title :各単語の最初の文字の大文字化

  • $エンコード:文字エンコード(UTF-8、GBKなど)。指定されていない場合、 MB_INTERNAL_ENCODING()はデフォルトで使用されます。


実践的なスキルを共有します

1.エンコーディングを明確に指定します

多くの場合、開発者はエンコーディングパラメーターを無視して、誤った変換の結果をもたらします。常にコードを明確に書くことをお勧めします:

 $text = "na?ve fa?ade résumé";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8');

出力: na?ve fa?aderesumé

2。中国語に対処する方法は?

MB_CONVERT_CASEは漢字の状態を変更しません(中国語には上限と小文字がないため)。ただし、UTF-8エンコードを設定する必要があります。そうしないと、文字列が切り捨てられる場合があります。

 $text = "こんにちは World";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8'); // 出力:こんにちは WORLD

3。最初の文字大文字化(タイトル形式)

記事のタイトル、ニュースタイトルなどの処理に適しています。

 $title = "le petit prince";
echo mb_convert_case($title, MB_CASE_TITLE, 'UTF-8'); // Le Petit Prince

テキストにHTMLタグまたはエンティティがある場合は、最初にそれらを削除するか、適切な処理を行ってください。そうしないと、出力が影響を受けます。

4。フォームデータクリーニングで使用します

$name = trim($_POST['name']);
$cleaned = mb_convert_case($name, MB_CASE_TITLE, 'UTF-8');

特にドキュメント名、タイトルバーなど、インターフェイスを表示するときに、ユーザー入力が一貫した形式を持っていることを確認してください。


サンプルアプリケーション:ユーザープロファイルの表示形式の標準化

ユーザープロファイルに名前フィールドをフォーマットして表示し、多言語入力をサポートする必要があるとします。

 function formatUserName($name) {
    return mb_convert_case(trim($name), MB_CASE_TITLE, 'UTF-8');
}

echo formatUserName("éMILIE du chatelet"); // émilie Du Chatelet

また、APIインターフェイスでこの関数をカプセル化し、返されたJSONデータを統一された形式で標準化することもできます。例は次のとおりです。

 header('Content-Type: application/json');

$data = [
    'name' => mb_convert_case('sErGiO péRez', MB_CASE_TITLE, 'UTF-8'),
    'profile_url' => 'https://gitbox.net/user/sergioperez'
];

echo json_encode($data);