現在の位置: ホーム> 最新記事一覧> STRPOS関数とSTRPOS関数の違い

STRPOS関数とSTRPOS関数の違い

gitbox 2025-05-31

PHPの文字列処理関数の中には、 STRPOSSTRPOSが2つの頻繁に使用される関数です。それらはほぼ同じように見え、1文字しか離れていませんが、実際には重要な違いがあります。この記事では、使用、違い、予防措置などの側面からのこれら2つの機能の類似点と相違点を徹底的に理解することができます。

1。基本的な使用法

StrposStrposは、両方とも文字列が最初に別の文字列に表示される場所を見つけるために使用されます。それらの基本的な構文は次のとおりです。

 strpos(string $haystack, mixed $needle, int $offset = 0): int|false
stripos(string $haystack, mixed $needle, int $offset = 0): int|false
  • $ haystackは、検索するターゲット文字列です。

  • $針は探しているサブストリングです。

  • $ offsetはオプションで、検索を開始する場所を指定します。

2。コアの違い:それが症例に敏感かどうか

これは、2つの最大の違いです。

  • Strpos症例に敏感です。

  • Stripos症例に依存しません

例:

 <?php
$str = "Hello World";

var_dump(strpos($str, "world"));  // 出力:bool(false)
var_dump(stripos($str, "world")); // 出力:int(6)
?>

この例では、 Strposは小文字の「世界」を見つけることができないためFalseを返しますが、 Strposはケース非感受性であるため、位置6は正しく見つかります。

3.値を返すときは注意してください

両方の関数は、整数(一致位置)またはfalse(見つかりません)を返します。一致する位置が0(つまり、サブストリングが最初にある)の場合、 == falseを使用して、一致が失敗するかどうかを判断することに注意する必要があります。

間違った執筆方法:

 if (strpos("abc", "a") == false) {
    echo "見つかりません";
}

出力は「見つかりません」ですが、実際には見つかります。

正しい書き込み:

 if (strpos("abc", "a") === false) {
    echo "見つかりません";
}

常に合同===を使用して、位置0の誤判断を避けるために偽であるかどうかを判断します。

4.一般的なアプリケーションシナリオ

  • STRPOS :敏感な単語検出、キーコマンドマッチングなど、厳密にケースに敏感な検索が必要です。

  • STRIPOS :ユーザー入力の処理、UAの判断、URLパラメーターの分析など、検索をよりリラックスさせる必要があります。

例:リンクに特定のキーワードが含まれているかどうかを判断します

<?php
$url = "https://gitbox.net/shop/product/123";

if (stripos($url, "/shop/") !== false) {
    echo "これは製品ページです";
}
?>

この例では、 StripOSを使用して、URLに上限と小文字に関係なく、 / shop /キーワードが含まれているかどうかを判断すると、ユーザーが訪問するページのタイプを効果的に識別できます。

V.パフォーマンスの違い

最も一般的な用途では、2つの間のパフォーマンスギャップはごくわずかです。ただし、大きなループで頻繁に呼び出し、文字列の数が特に大きい場合、 STRPOSはケース変換プロセスがないため、わずかに高速になります。

6。ヒントと予防策

  1. strposstrposの返品値を混ぜて統一された判断を下さないでください。ケースに敏感なセマンティクスに注意を払ってください。

  2. 検索ロジックがユーザーの入力に依存している場合は、可能な限りStripOSを使用してみてください。これはよりフレンドリーです。

  3. === falseを使用して、一致が失敗するかどうかを判断します。そうしないと、位置0で簡単に誤解されます。

7。概要

関数名ケースに敏感かどうか戻り値タイプシナリオを使用します
strposはいintまたはfalse正確に一致するシーン、厳密にはケースに敏感です
ストリップいいえintまたはfalseシナリオ、ケースに依存しない検索要件を緩やかに一致させます

StrposStrposは1つの小文字Iにすぎませんが、その背後にあるロジックは、必要な結果を見つけることができるかどうかを決定します。実際の開発では、それらを合理的に選択すると、多くのバグを回避できます。この記事があなたがそれらの違いを本当に理解するのに役立つことを願っています、そして、あなたは次回コードを書くことをheしないでください!