現在の位置: ホーム> 最新記事一覧> MB_STRIST関数を使用してケース非感受性の文字列検索を実装する方法は?

MB_STRIST関数を使用してケース非感受性の文字列検索を実装する方法は?

M66 2025-08-04

MB_STRIST関数を使用してケース非感受性の文字列検索を実装する方法は?

PHPでは、文字列操作は非常に一般的で重要なタスクです。より柔軟な文字列処理を実現するために、PHPは多くの有用な機能を提供します。そのうちの1つはMB_STRSTR関数であり、マルチバイトエンコードされた文字列でサブストリングを見つけることができ、ケース非感受性です。この関数は、主にUTF-8や他のマルチバイト文字セットなどの文字列を処理するために使用されます。

1。MB_STRIRT関数の紹介

MB_STRSTRは、PHPのマルチバイトバージョン機能であり、ケースに依存しない文字列検索を実行するための機能です。通常のSTRSTR関数と同様に、 MB_STRSTRは、指定されたサブストリングが最初に表示される部分を返します。違いは、マルチバイト文字セットを正しく処理できることです。

関数プロトタイプ:

 <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_needletrueに設定されている場合、返された文字列は$ haystackから$ heedleが最初に表示される場所までの部分になります。デフォルトはfalseで、 $針の後に部品を返します。

  • $エンコード:文字エンコードを指定します(指定されていない場合、デフォルトは内部文字エンコード設定、通常はUTF-8を使用することです)。

2。サンプルコード

MB_STRSTR関数を使用してケースに依存しないサブストリングを見つける方法を示す簡単な例を以下に示します。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// エンコードをに設定します UTF-8</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_internal_encoding</span></span><span>(</span><span><span class="hljs-string">"UTF-8"</span></span><span>);

</span><span><span class="hljs-comment">// ターゲット文字列</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, 世界! Welcome to PHP."</span></span><span>;

</span><span><span class="hljs-comment">// 発見されるサブストリング</span></span><span>
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"world"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 mb_stristr サブストリングを見つけます,症例は無感覚です</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">?&gt;</span></span><span>
</span></span>

説明する:

  1. MB_INTERNAL_ENCODING( "UTF-8")は、UTF-8にエンコードする内部文字を設定します。これにより、マルチバイト文字列が正しく処理されるようになります。

  2. MB_STRSTR($ HayStack、$ edele)を使用して、 $ HayStack$針を探します。 MB_Stristrはケースに依存しないため、「世界」と「世界」の両方が一致していると見なされます。

  3. 一致するサブストリングが見つかった場合、関数は一致する位置から文字列の端まで部分を返します。見つからない場合、

3。マルチバイト文字を処理します

MB_STRISTの重要な機能は、マルチバイト文字セット(UTF-8、SJISなど)を正しく処理できることです。これにより、ASSASCII以外の文字列を扱うときに、ストリストよりも信頼性が高くなります。

たとえば、漢字を探しているとします。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ターゲット文字列包含中文字符</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-comment">// 探す"のように"サブストリング</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-comment">// 探す并返回匹配部分</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">?&gt;</span></span><span>
</span></span>

この例では、 MB_STRISTはマルチバイト文字「wike」を正しく認識し、サブストリングから始まる後続のセクションを返します。

4。注意すべきこと

  • キャラクターエンコーディング:特にマルチバイト文字セットを扱う場合、 $ haystack$針のキャラクターエンコードが一貫していることを確認してください。エンコーディングが一致しない場合、それは比類のない結果または誤った結果をもたらす可能性があります。

  • パフォーマンスの考慮事項:通常のStristr関数と比較して、 MB_STRISTのパフォーマンスは、特に大量のテキストで検索する場合、わずかに劣っている可能性があります。実際の条件に基づいて考慮する必要があります。

  • 元の位置に戻らないMB_STRPOSなどの関数とは異なり、 MB_STRSTRは、位置ではなく、一致するポイントから始まるサブストリングを返します。場所を取得する必要がある場合は、 MB_STRPOSまたはMB_STRRPOS (リバースルックアップ)を使用できます。

5。概要

MB_STRISTは、PHPで非常に有用な機能であり、マルチバイト文字セットの文字列でケースに依存しない検索操作を実行できます。この関数を合理的に使用することにより、UTF-8またはその他のエンコードされた文字列を処理し、柔軟なストリングマッチングを実行しやすくなります。