MB_CONVERT_CASE関数は、文字列内の文字を指定された上限および小文字に変換でき、3つのモードをサポートできます。
MB_Case_upper :すべての大文字に変換します。
MB_Case_lower :すべての小文字に変換します。
mb_case_title :各単語の最初の文字を大文字に変換し、残りは小文字に変換します。
サンプルコード:
<span><span><span class="hljs-variable">$string</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_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_UPPER, </span><span><span class="hljs-string">"UTF-8"</span></span><span>); </span><span><span class="hljs-comment">// 出力:HELLO WORLD! こんにちは,世界!</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_LOWER, </span><span><span class="hljs-string">"UTF-8"</span></span><span>); </span><span><span class="hljs-comment">// 出力:hello world! こんにちは,世界!</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_TITLE, </span><span><span class="hljs-string">"UTF-8"</span></span><span>); </span><span><span class="hljs-comment">// 出力:Hello World! こんにちは,世界!</span></span><span>
</span></span>正規表現(Regex)は、強力な文字列パターンマッチングツールです。複雑な文字列変換を扱うとき、正規表現は、特定の単語、文字、シンボルなど、変換する必要がある部品を正確に見つけることができ、これらの部分をケースに変換するのに役立ちます。
正規表現を介して、いくつかのルールを定義し、 MB_CONVERT_CASEを組み合わせて一致したパーツを変換して、より柔軟な効果を実現できます。
各単語の最初の文字を大文字にして他の文字を小文字を小文字にする必要がある文字列があると仮定しますが、同時に特定の特定の単語(「PHP」など)のケースを影響を受けないようにしたいとします。現時点では、正規表現を介して各単語を見つけて、 MB_Convert_Caseを使用してそれを実現できます。
サンプルコード:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"this is a php test, check PHP again."</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\b(\w+)\b/'</span></span><span>; </span><span><span class="hljs-comment">// 単語の境界を一致させます</span></span><span>
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// 一致する単語をキャップします</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_TITLE, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力:This Is A Php Test, Check Php Again.</span></span><span>
</span></span>この例では、正規式/ \ b(\ w+)\ b /は、すべての単語の境界(つまり、各単語)のコンテンツと一致し、各単語の最初の文字を、 MB_CONVERT_CASEを使用してPREG_REPLACE_CALLBACKコールバック関数を介して大文字と小文字に変換します。
特定の単語を他のことに影響を与えることなく、特定の単語をケースに変換する必要がある場合があります。たとえば、すべての「PHP」を「PHP」に変えることができますが、他の単語は同じままです。
サンプルコード:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"I love php, and I am learning php in 2025."</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\bphp\b/i'</span></span><span>; </span><span><span class="hljs-comment">// マッチ“php”,症例は無感覚です</span></span><span>
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// 将マッチ到的“php”資本に変換します</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_UPPER, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力:I love PHP, and I am learning PHP in 2025.</span></span><span>
</span></span>ここでの正規表現/\ bphp \ b /iは、すべてのケースに依存しない「PHP」ワードと一致します。 MB_CONVERT_CASEはそれらを大文字に変換します。
いくつかの複雑なシナリオでは、コンテキストでのキャラクターの位置に基づいてケースを変換するかどうかを決定する必要がある場合があります。たとえば、いくつかの略語またはコードスニペット(「API」など)はそのままである必要がありますが、他の単語はケースコンセントになる可能性があります。
サンプルコード:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"the API is a powerful tool, API is awesome."</span></span><span>;
</span><span><span class="hljs-comment">// ネガティブルックヘッドを使用して、既存のものを除外します“API”</span></span><span>
</span><span><span class="hljs-comment">// これにより確実になります“API”変換されていません,他の言葉は正常に変換されます</span></span><span>
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\b(?!API\b)\w+\b/'</span></span><span>;
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_TITLE, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力:The API is A Powerful Tool, API is Awesome.</span></span><span>
</span></span>この例では、ネガティブLookahead (?!API \ b)を使用して、「API」が変換されないようにしますが、他の単語は大文字の最初の文字で変換されます。
MB_CONVERT_CASEと正規表現を組み合わせることで、より複雑で柔軟なケース変換を実現できます。このアプローチは、特定のルールに基づいて文字を制御する必要があるシナリオに特に適しています(特定の単語の一致、特定の部分を除く、またはコンテキストに応じて)。単純なグローバルケース変換であろうと、粒状制御が必要な状況であろうと、 MB_CONVERT_CASEと正規表現の組み合わせは、非常に効率的でカスタマイズされたソリューションを提供できます。