現在の位置: ホーム> 最新記事一覧> MB_STRSTR機能を使用して、文字列から指定された部品を削除するための実用的なヒントと方法

MB_STRSTR機能を使用して、文字列から指定された部品を削除するための実用的なヒントと方法

gitbox 2025-08-26

PHPでは、文字列を処理する場合、文字列から特定の部品を削除する必要があることがよくあります。 MB_STRSTR()関数は、非ASCII文字を処理するときに特に役立つマルチバイト文字セット処理機能です。この記事では、MB_STRSTR()関数を使用して、指定された部品を文字列から削除する方法を紹介します。

1。MB_STRSTR ()関数の紹介

MB_STRSTR()はマルチバイトストリング関数であり、通常のSTRSTR()関数に似ていますが、マルチバイト文字セット(UTF-8、Shift-JISなど)用に設計されています。したがって、英語以外の文字を含む文字列を処理する必要がある場合、 MB_STRSTR()はより安定して信頼性が高くなります。

文法:

 <span><span><span class="hljs-title function_ invoke__">mb_strstr</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 (optional): trueに設定した場合、の前に部分を返し、それ以外の場合はの後に部分を返します。

  • $エンコード(オプション):文字エンコードを指定し、デフォルトはMB_INTERNAL_ENCODING()です。

2。指定された部品を文字列から削除します

文字列があり、その一部を削除したいとします。 MB_STRSTR()で部品を見つけてから、文字列操作を介して削除できます。

例:文字列から指定されたサブストリングを削除します

次の文字列があるとします。

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"私は勉強するのが好きですPHPプログラミング"</span></span><span>;
</span></span>

「学習」部分を削除することを望んでいます。最初にMB_STRSTR()を使用して、このサブストリングの位置を見つけてから、対応する処理を実行できます。

コード実装:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$str</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">"勉強"</span></span><span>;

</span><span><span class="hljs-comment">// 使用mb_strstr探す"勉強"どこに表示されるか</span></span><span>
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);

</span><span><span class="hljs-comment">// 見つかった場合"勉強",この一部を削除します</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</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_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>)) . </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">mb_strlen</span></span><span>(</span><span><span class="hljs-variable">$needle</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-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>

結果:

 <span><span>私は好きですPHPプログラミング
</span></span>

3。MB_STRSTR ()を使用して、サブストリング後に部品を削除します

サブストリング後の部品のみを削除する場合は、 MB_STRSTR()関数のbeforid_needleパラメーターを使用できます。

例:サブストリング後の部品を削除します

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$str</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">"勉強"</span></span><span>;

</span><span><span class="hljs-comment">// 得る"勉強"前的一部</span></span><span>
</span><span><span class="hljs-variable">$before</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$before</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

結果:

 <span><span>私は好きです
</span></span>

4。複数のサブストリングを削除する例

文字列から複数の異なるサブストリングを削除する必要がある場合は、 MB_STRSTR()およびその他の文字列操作関数を組み合わせて使用​​できます。ループと正規表現を通じて、タスクを効率的に完了できます。

例:複数のサブストリングを削除します

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"私は勉強するのが好きですPHPプログラミング和Web発達"</span></span><span>;
</span><span><span class="hljs-variable">$needles</span></span><span> = [</span><span><span class="hljs-string">"勉強"</span></span><span>, </span><span><span class="hljs-string">"Web"</span></span><span>];

</span><span><span class="hljs-comment">// 複数のサブストリングを削除します</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$needles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>) {
    </span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</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">$str</span></span><span>);
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

結果:

 <span><span>私は好きですPHPプログラミング和発達
</span></span>

5。注意すべきこと

  • MB_STRSTR()は、マルチバイト文字セットに最適化されています。通常、中国語、日本、韓国語などを含むキャラクターセットを扱う場合、従来のStrSTR()よりも優れています。

  • マルチバイト文字を処理するときは、正しいエンコード形式が指定されていることを確認してください。そうしないと、結果が不正確である可能性があります。

  • 場合によっては、 mb_substr()mb_strpos()を組み合わせて使用​​すると、文字列の削除位置を正確に制御できます。

結論

MB_STRSTR()関数を介して、特に非常に重要な効果があるマルチバイト文字セットシナリオで、文字列から指定された部分を簡単に削除できます。これらのテクニックを理解して習得することで、文字列を扱うときに効率的になるだけでなく、いくつかの一般的なエンコードの問題を避けます。