PHP8 の関数: str_contains() の効率的な文字列検索テクニック

WBOY
リリース: 2023-05-16 08:20:02
オリジナル
1388 人が閲覧しました

PHP8 の関数: str_contains() の効率的な文字列検索テクニック

PHP8 のリリースでは、さらに多くの新機能と改善が加えられています。最も注目すべき新機能の 1 つは str_contains() 関数です。この関数を使用すると、文字列に別の文字列が含まれているかどうかを判断できます。この記事では、str_contains() 関数と PHP でのその使用法、および効率的な文字列検索にそれを使用する方法について詳しく説明します。

従来の方法の欠点

これまでは、文字列内の特定の部分文字列を見つけるには、通常、strpos() 関数を使用していました。この関数は、別の文字列内の文字列を検索し、見つかった最初の位置を返します。たとえば、文字列内で最初に出現する「hello」を検索します:

$string = 'hello world';
$position = strpos($string, 'hello');
ログイン後にコピー

ただし、strpos() 関数には欠陥があり、最初に一致する部分文字列を検索した後に停止します。文字列内で一致するすべての部分文字列を見つけたい場合は、ループを使用して一致する各部分文字列を検索する必要があります。

$string = 'hello world';
$needle = 'l';
$offset = 0;
$positions = array();
while (($position = strpos($string, $needle, $offset)) !== false) {
    $positions[] = $position;
    $offset = $position + 1;
}
ログイン後にコピー

この方法は機能しますが、コードが少し冗長で、検索速度も遅くなります。 。この場合、str_contains() 関数の方が明らかに効率的です。

str_contains() 関数

str_contains() 関数は、PHP8 で追加された新しい関数で、文字列に別の文字列が含まれているかどうかをすばやく判断できます。この関数に渡す必要があるのは、検索する文字列と検索する部分文字列の 2 つのパラメータのみです。検索対象の文字列内で一致する部分文字列が見つかったかどうかを示すブール値を返します。簡単な例を次に示します。

$string = 'hello world';
$needle = 'hello';
$is_contains = str_contains($string, $needle);
ログイン後にコピー

この例では、$is_contains の値は true になります。この関数を再度呼び出して $needle 変数を「goodbye」に設定すると、$is_contains の値は false になります。

内部的には、str_contains() 関数はより効率的なアルゴリズムを使用して部分文字列を検索します。 strpos() 関数と比較すると、より効率的でコードが簡単です。

検索効率の向上

str_contains() 関数自体は非常に効率的ですが、検索効率をさらに向上させるのに役立つテクニックがいくつかあります。いくつかのヒントを次に示します。

  1. 繰り返し検索しないでください

文字列を複数回検索する必要がある場合は、文字列を繰り返し検索しないようにする必要があります。代わりに、文字列を 1 回検索し、結果を変数に保存する必要があります。この変数を使用すると、毎回再検索することなく、文字列に特定の部分文字列が含まれているかどうかを判断できます。

  1. 検索範囲をできる限り狭める

長い文字列内の部分文字列を検索する必要がある場合は、検索範囲を狭めることができます。できるだけ。たとえば、substr() 関数を使用して元の文字列の一部をインターセプトし、この部分文字列を検索できます。これにより、時間の複雑さを大幅に軽減できます。

  1. ループ内で str_contains() 関数を使用しないでください

str_contains() 関数は非常に効率的ですが、ループ内で使用すると検索が遅くなる可能性があります。ループ内で複数の部分文字列を検索する必要がある場合は、まずこれらの部分文字列を配列に格納してから、ループの外で str_contains() 関数を呼び出す必要があります。これにより、関数呼び出しの繰り返しが回避され、検索が大幅に高速化されます。

結論

str_contains() 関数は、PHP8 の非常に便利な新しい関数で、文字列に別の文字列が含まれているかどうかをすばやく判断するのに役立ちます。従来の方法よりも効率的で、コードがすっきりしています。すでに非常に効率的ですが、検索効率を向上させるためにいくつかのトリックを使用できます。大きな文字列を検索する場合でも、複数の部分文字列を検索する場合でも、str_contains() 関数を使用することは非常に良い選択です。

以上がPHP8 の関数: str_contains() の効率的な文字列検索テクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート