ホームページ  >  記事  >  バックエンド開発  >  PHP8 の新関数: str_contains() の効率的な文字列検索手法

PHP8 の新関数: str_contains() の効率的な文字列検索手法

WBOY
WBOYオリジナル
2023-05-16 11:40:52879ブラウズ

PHP8 は、間違いなく現在重要な PHP バージョンであり、パフォーマンスとセキュリティが向上するだけでなく、非常に便利な新機能もいくつか導入されています。新しい機能の 1 つは str_contains() 関数で、これは文字列内の指定された部分文字列を検索するために使用されます。

以前は、通常、文字列内に特定の部分文字列が存在するかどうかを調べるために strpos() 関数を使用していました。たとえば、「hello」部分文字列が次の文字列に含まれているかどうかを確認するには:

$string = "Hello, world!";
if (strpos($string, "hello") !== false) {
    echo "Found 'hello' in the string!";
} else {
    echo "Did not find 'hello' in the string!";
}

結果は「文字列に 'hello' が見つかりませんでした!」となります。これは、strpos() 関数では大文字と小文字が区別されるためです。

str_contains() 関数は大文字と小文字を区別せず、文字列に指定された部分文字列が含まれるかどうかを示すブール値を直接返します。したがって、上記のコードは str_contains() 関数を使用して書き直すことができます:

$string = "Hello, world!";
if (str_contains($string, "hello")) {
    echo "Found 'hello' in the string!";
} else {
    echo "Did not find 'hello' in the string!";
}

結果は「文字列内に 'hello' が見つかりました!」となります。 str_contains() 関数は文字列に「hello」部分文字列が含まれるかどうかを検出するため、大文字と小文字は区別されません。

strpos() の代わりに str_contains() を使用すると、より直観的になるだけでなく、より効率的になります。 str_contains() は文字列検索の効率を向上させるためにいくつかの最適化手法を使用するためです。これらの最適化手法には次のようなものがあります。

最適化 1: Boyer-Moore アルゴリズムを使用する

Boyer-Moore アルゴリズムは効率的な文字列検索アルゴリズムであり、str_contains() の基礎となる実装の 1 つです。関数。 。 Boyer-Moore アルゴリズムの主な考え方は、検索数を減らすために可能な限り多くの無効な文字をスキップすることです。

たとえば、「hello, world!」で文字列「hello」の位置を見つける場合、Boyer-Moore アルゴリズムはまず文字列の最後の文字「o」から照合を開始します。一致しない場合、ジャンプ距離は文字の出現数に基づいて計算されます。この例では、文字列「hello」に文字「o」が 2 回出現するため、Boyer-Moore アルゴリズムは、重複した一致を避けるために検索位置を 2 文字前方にスキップします。

Boyer-Moore アルゴリズムを使用すると、特に長い文字列や長い部分文字列の場合、文字列検索の効率が大幅に向上します。

最適化 2: 文字列を複数回コピーしないようにする

strpos() 関数を使用して文字列を検索する場合、通常は比較のために文字列と部分文字列をコピーする必要があります。これにより、特に操作対象の文字列が長い場合、メモリ使用量が増加する可能性があります。

str_contains() 関数は、参照カウント メカニズムを使用して文字列の複数回のコピーを回避します。参照カウント メカニズムは、複数の変数が同じ文字列を参照する場合に、文字列の同じコピーを共有して、複数のコピーを回避できるメモリ管理テクノロジです。

参照カウント メカニズムを使用すると、文字列を複数回コピーする必要がなくなり、メモリ使用量が削減され、プログラムのパフォーマンスが向上します。

最適化 3: C コードを使用して実装

str_contains() 関数は C コードを使用して実装されるため、strpos() 関数よりも高速かつ効率的です。多数の文字列を検索する場合、str_contains() 関数を使用すると、プログラムの実行速度が大幅に向上します。

概要

str_contains() 関数は、PHP8 の非常に便利な新機能で、文字列内の指定された部分文字列を検索するために使用できます。これにより、コードがより直感的で理解しやすくなるだけでなく、最適化手法を使用することでプログラムのパフォーマンスも向上します。

PHP で文字列検索を実行する必要がある場合は、パフォーマンスとコードの効率を向上させるために str_contains() 関数の使用を検討してください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。