MB_SUBSTITETITE_CHARACTER()は、違法な文字に遭遇したときに置換文字を設定または取得するPHPのマルチバイト文字列処理機能です。違法なキャラクターは通常、現在の文字エンコードで表現できない文字を指します。これは、異なる言語の文字セットを扱うときに非常に一般的です。
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$substitute_character</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">mixed</span></span><span>
</span></span>
$ soltive_character :代替文字の代替文字またはエンコードを指定します。 nullに設定すると、現在の代替文字が返されます。
返品値:現在の代替文字のエンコードを返します。
多言語環境では、データ入力と出力中に不一致のエンコードが発生することがよくあります。たとえば、特定の文字を含む文字列をその文字セットをサポートしないシステムに転送しようとする場合、または違法文字を含むデータを解析するときにプログラムがエラーをスローする場合があります。これらの問題を回避するために、 MB_SUBSTITETITE_CHARACTER()を使用して、違法なキャラクターを正しく処理できるように代替キャラクターを設定できます。
現在の代替文字は、MB_SUBSTITETITE_CHARACTER()関数を介して引数を渡すことで取得できます。
<span><span><span class="hljs-variable">$current_substitute</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在の代替文字エンコーディング: "</span></span><span> . </span><span><span class="hljs-variable">$current_substitute</span></span><span>;
</span></span>
デフォルトでは、 mb_substitute_character()は、代替文字を表すエンコードされた値を返します。一般的に、デフォルトの代替文字は0xFFFDであり、これはUnicode標準で定義されている「サロゲート文字」です。
新しい代替キャラクターを設定するには、 MB_Substitute_Character()のパラメーターとして、代替文字のエンコードを渡すことができます。たとえば、疑問符( ? )などの特定のキャラクターに設定できます。
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span></span>
この時点で、すべての違法なキャラクターは、変換プロセス中に疑問符に置き換えられます。
MB_SUBSTITETITE_CHARACTER()の最も一般的なアプリケーションシナリオは、変換をエンコードするためにMB_CONVERT_ENCODING()を使用する場合です。違法文字を含む文字列をあるエンコードから別のエンコードに変換すると、代替文字を設定して、変換プロセス中にエラーがスローされないことを確認できます。
<span><span><span class="hljs-comment">// 別の文字を疑問符に設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span><span><span class="hljs-comment">// エンコーディングを変換し、違法なキャラクターを交換します</span></span><span>
</span><span><span class="hljs-variable">$converted_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$input_string</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'ISO-8859-1'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_str</span></span><span>;
</span></span>
この例では、 $ input_stringに違法文字が含まれている場合、疑問符に変換されます。
デフォルトの代替文字( 0xFFFD )または質問マーク( ? )を使用することに加えて、任意の文字に設定することもできます。たとえば、代替文字として*を使用します。
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'*'</span></span><span>);
</span></span>
これは、場合によっては違法なキャラクターの位置をより明確にマークするのに役立ちます。
実際のニーズに応じて、適切な代替文字を選択する必要があります。代替文字がユーザーに表示されている場合、そのような目立った珍しいシンボルを選択することをお勧めします。または* 。
エンコーディングを処理するときは、ターゲットエンコーディングが選択した代替文字をサポートしていることを確認してください。選択した文字をターゲットエンコーディングで表現できない場合でも、デフォルトの代替文字に置き換えることができます。
特に外部入力または信頼されていないデータソースからデータが取得される場合、バッチ内のデータを処理する場合、適切な代替文字を設定すると、データの破損やプログラムエラーを効果的に回避できます。
MB_SUBSTITETITE_CHARACTER()関数は、文字列エンコード変換を扱う際に柔軟な制御を提供します。違法なキャラクターに遭遇すると、プログラムのクラッシュやエラー出力を避ける明示的なキャラクターに置き換えることを選択できます。この関数の使用を習得すると、多言語のテキストを処理する能力を向上させるだけでなく、プログラムの堅牢性を向上させることもできます。代替キャラクターを合理的に設定することにより、プログラマーは一貫性のないエンコーディングによって引き起こされる困難を効果的に回避できます。