PHPでは、文字列操作は一般的なタスクです。ユーザー入力の処理、ファイルコンテンツの処理、ネットワークリクエストの分析など、文字列を見つけたり操作したりする必要があります。マルチバイトエンコーディング(UTF-8)環境では、標準の文字列関数が特定の特殊文字を正しく処理できない場合があり、現時点ではMB_STRISTは非常に実用的なツールになります。
MB_STRSTRは、PHPのMulti-Byte String Extension(MBString)によって提供される関数です。その機能はPHPのStristrに似ており、別のサブストリングが文字列に存在するかどうかを見つけるために使用されますが、UTF-8やその他の非ASCIIエンコーディングなどのマルチバイト文字セットを扱うために特に使用されます。
関数:ターゲット文字列に、特定のサブストリングが含まれているかどうかを見つけます。
戻り値:サブストリングが存在する場合、サブストリングの最初の発生から文字列の最後まで部分を返します。サブストリングが存在しない場合、 falseを返します。
MB_STRIST関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</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><span class="hljs-literal">false</span></span><span>
</span></span>
$ haystack :ターゲット文字列。これは、探したい大きな文字列です。
$針:見つかるサブストリング。
$ before_needle :オプションのパラメーターは、 trueに設定されている場合、サブストリングが最初に表示される前にパーツを返します。デフォルトはfalseであり、サブストリングの最初の発生から文字列の最後までの部分を示します。
$エンコード:オプションのパラメーター、文字エンコードを指定します。デフォルトでは、 MB_STRIRTは内部文字エンコード設定を使用します。
文字列があり、特定のサブストリングが含まれているかどうかを確認する必要があるとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"いらっしゃいませPHPプログラミングの世界!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"PHP"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> !== </span><span><span class="hljs-literal">false</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">$result</span></span><span>;
} </span><span><span class="hljs-keyword">else</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-meta">?></span></span><span>
</span></span>
上記のコードでは、 MB_STRSTRを使用して、String $ HayStackにサブストリング$針(つまり「PHP」)が含まれているかどうかを調べます。見つかった場合、文字列の最後まで「PHP」から始まる部分が返されます。見つからない場合、 Falseが返されます。
出力は次のとおりです。
<span><span>サブストリングを見つけました!消す:PHPプログラミングの世界!
</span></span>
Strristと同様に、 MB_Stristrもケース非感受性です。つまり、キャラクターのケースを無視します。したがって、 $針が小文字「PHP」または大文字「PHP」である場合、対応するサブストリングを見つけることができます。
たとえば、次のコードでは、サブストリングも見つかります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"いらっしゃいませphpプログラミングの世界!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"PHP"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> !== </span><span><span class="hljs-literal">false</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">$result</span></span><span>;
} </span><span><span class="hljs-keyword">else</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-meta">?></span></span><span>
</span></span>
UTF-8文字列を扱う場合、Standard Stristrはマルチバイト文字を正しく処理できず、 MB_Stristrはこの問題を回避できます。たとえば、漢字を処理する場合、 MB_STRISTは文字検索を正しく実行できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"これは中国のテスト文字列です"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"中国語"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> !== </span><span><span class="hljs-literal">false</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">$result</span></span><span>;
} </span><span><span class="hljs-keyword">else</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-meta">?></span></span><span>
</span></span>
出力は次のとおりです。
<span><span>サブストリングを見つけました!消す:中国語测试字符串
</span></span>
MB_STRSTRは、特にUTF-8またはその他の非ASCII文字セットである文字列を処理するのに適した強力なマルチバイトストリングルックアップ機能です。 Strrist関数と非常によく似ています。主な違いは、マルチバイト文字を処理できることであり、文字セットの互換性によって引き起こされる問題を回避できます。
MB_STRSTRを正しく使用することにより、文字列に指定されたサブストリングが含まれており、文字ケースまたは文字エンコードの影響を受けないかどうかを簡単に検出できます。このチュートリアルを通して、文字列検索のためにPHPでMB_STRISTを使用する方法をよりよく理解できることを願っています。