PHPでは、 Strtoupper()などの従来の文字列関数は、マルチバイト文字セット(UTF-8、GBK、BIG5など)を扱うときにこれらの文字を正しく処理できない場合があります。現時点では、 MB_STRTOUPPER()関数を使用できます。これは、マルチバイトストリング拡張(MBSTRing)によって提供され、文字列を大文字に変換する機能です。今日、 MB_STRTOUPPER()の基本的な使用法を詳細に理解し、この関数をすばやくマスターする方法を説明します。
mb_strtoupper()関数の関数は、指定された文字列のアルファベット文字を大文字に変換することです。 strtoupper()とは異なり、 mb_strtoupper()はマルチバイトの文字セットを正しく処理でき、UTF-8エンコーディングの下で中国語や日本人などのキャラクターを正しく処理できるようにします。
<span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ str :大文字に変換する必要がある入力文字列。
$エンコード:オプションのパラメーター、指定文字エンコード、デフォルト値はnull 、つまり内部文字エンコード(通常はutf-8)を使用します。
MB_STRTOUPPER()は、マルチバイトエンコード文字列処理にのみ適しており、通常、UTF-8、Shift-JIS、EUC-JPなどのエンコードに使用されます。
MbString拡張機能をインストールしない場合、PHPはこの関数を使用できないため、MBSTring拡張機能がインストールされ、使用するときに有効になっていることを確認してください。
最も一般的な使用法は、文字列を大文字に直接変換することです。たとえば、中国語または英語の文字列を大文字に変換します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"hello world"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>); </span><span><span class="hljs-comment">// 出力 "HELLO WORLD"</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"こんにちは,世界"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>); </span><span><span class="hljs-comment">// 出力 "こんにちは,世界"</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記の例では、 mb_strtoupper()は英語の文字列を正しく処理し、大文字に変換することができます。中国の弦の場合、漢字自体には症例の違いがないため、変化しません。
MB_STRTOUPPER()は、エンコードパラメーターを介して文字エンコードを指定できます。デフォルトでは、PHPの内部文字エンコード(通常はUTF-8)を使用しますが、明示的に指定できる他のエンコード文字列を処理する必要がある場合があります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"こんにちは,世界"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"GBK"</span></span><span>); </span><span><span class="hljs-comment">// 存在する GBK 编码下出力大写</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
エンコーディングはここでGBKとして指定され、関数は指定されたエンコードに従って文字列を大文字に変換します。エンコーディングが正しくない場合、出力エラーまたは文字化けコードを引き起こす可能性があります。
MB_STRTOUPPER()関数は、通常の文字を処理するだけでなく、特殊文字を含む文字列を正しく処理できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello, 世界! こんにちは!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>); </span><span><span class="hljs-comment">// 出力 "HELLO, 世界! こんにちは!"</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、英語の部分は資本に変換されますが、中国の部分は変更されず、特殊文字(コンマと感嘆符)は同じままです。
シングルバイト文字セット(ISO-8859-1やASCIIエンコーディングなど)の場合、 Strtoupper()で十分です。ただし、文字列にマルチバイト文字(中国語や日本語など)が含まれている場合、 Strtoupper()は適切に機能しないため、コードが付けられている可能性があります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"こんにちは,世界"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>); </span><span><span class="hljs-comment">// 出力错误或乱码</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
strtoupper()はマルチバイト文字をサポートしていないため、上記のコードは文字化けコードを引き起こす可能性がありますが、 mb_strtoupper()はそれを正しく処理できます。
MB_Strtoupper()は、特に中国語、日本、その他のキャラクターセットに適したマルチバイト文字セットを扱う際に非常に便利なツールです。 PHPでは、それを使用すると、マルチバイト文字が、動作が文字化けしたり誤った動作をせずに大文字に正しく変換されることが保証されます。 MB_STRTOUPPER()の基本的な使用法をマスターすることで、エンコーディング効率を改善するだけでなく、アプリケーションがさまざまな文字エンコーディングを正しく処理し、ユーザーエクスペリエンスを改善できるようにします。