現在の位置: ホーム> 最新記事一覧> PHPのStrristrと正規表現(preg_match)の違いは何ですか?

PHPのStrristrと正規表現(preg_match)の違いは何ですか?

gitbox 2025-06-22

1。strristr()関数

strristr()は、phpの組み込み文字列関数です。文字列が最初に別の文字列に表示され、その場所とその後の部分を返す場所を見つけるために使用されます。 strrist()はケース非感受性です。つまり、文字の症例の違いを無視します。

文法:

 <span><span><span class="hljs-title function_ invoke__">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">mixed</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-literal">false</span></span><span>
</span></span>
  • $ haystack :検索する文字列。

  • $針:見つかるサブストリング。

  • $ before_needletrueに設定した場合、針の前の部分が返され、の後の部分はデフォルトで返されます。

例:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello World!"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">"world"</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-comment">// 出力 "World!"</span></span><span>
</span></span>

この例では、 Strrist()がケースを無視しているため、「世界」に一致して「世界!」を返すことができます。

2。PREG_MATCH()関数

preg_match()は、正規表現マッチングのPHPの関数です。提供された正規表現に基づいて文字列に一致させることができます。 strrist()とは異なり、 preg_match()を使用すると、強力な正規表現ルールを使用して、より複雑なマッチング操作が可能になります。この関数は、ケースに依存しないマッチングをサポートするだけでなく、文字クラス、数量化器、境界条件など、他のさまざまなマッチングパターンもサポートします。

文法:

 <span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$subject</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &amp;</span><span><span class="hljs-variable">$matches</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$flags</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
  • $パターン:正規表現パターン。

  • $件名:一致する文字列。

  • $マッチ:試合が成功した場合は、マッチング結果を返します。

  • $フラグ:フラグビット、一致する動作をコントロールします。

  • $ offset :試合の開始位置。

例:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello World!"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">"/world/i"</span></span><span>, </span><span><span class="hljs-variable">$string</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-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>

この例では、 preg_match()は正規表現/world /iを使用して、文字列「Hello World!」と一致します。 Iフラグは、上限および小文字と小文字の大文字と小文字の大文字が異なることを示しているため、「世界」の場合が異なる場合でも、うまく一致することがあります。

3。Strstr ()preg_match()の違い

  1. 機能的な複雑さ

    • Strrist()は、単純な検索タスクに適した単純な文字列検索関数です。見つける文字列とターゲット文字列の2つのパラメーターのみが必要です。一致するルールは非常にシンプルで、主にサブストリングとサポートケースの鈍感の検索に焦点を当てています。

    • preg_match()は、正規表現を使用して複雑なマッチングを実行し、より多様な文字列マッチングタスクを処理できる、より強力な関数です。より柔軟な複雑なパターン、キャラクタークラス、数量詞などを指定できます。

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

    • Strristr()には単純な関数があるため、通常、パフォーマンスのpreg_match()よりも優れています。特に、単純なサブストリング検索のみが必要な場合、 Strrist()のパフォーマンスはより効率的です。

    • preg_match()では、より複雑なパターンマッチングのために正規表現を解析する必要があるため、特に非常に大きな文字列や複雑な正規表現を扱う場合は、パフォーマンスが比較的遅くなります。

  3. 戻り値の違い

    • strristr()ターゲット文字列の部分を、一致する位置から一致したときに、一致した位置から端まで返します。一致が見つからない場合、 falseが返されます。

    • preg_match()が正常に一致した場合、1つを返し、失敗した場合、0を返し、より多くのマッチング情報(マッチングサブストリング、キャプチャされたパケットなど)を$ Matchesパラメーターを介して返すことができます。

  4. 正規表現のサポート

    • Strrist()は正規表現をサポートせず、マッチング関数は比較的限られているため、単純な文字マッチングのみを実行できます。

    • preg_match()は完全な正規表現をサポートし、パターンマッチング、グループ化、逆流などの複雑な操作を実行できます。

4.シナリオを使用します

  • strrist()使用シナリオ
    特に固定サブストリングを見つける必要がある場合は、単純なサブストリング検索操作に適しています。パフォーマンスが優れているため、パフォーマンスが高いシナリオに適しています。

  • preg_match()使用シナリオ
    特に正規表現を使用して複雑な解析、検証、または文字列の操作の交換を実行する必要がある場合は、複雑なパターンマッチングに適しています。 preg_match()は、より一致するコントロールと柔軟性を提供できます。