ホームページ > バックエンド開発 > PHPチュートリアル > PHP で配列を使用して文字列内の複数の部分文字列を効率的に検索するにはどうすればよいですか?

PHP で配列を使用して文字列内の複数の部分文字列を効率的に検索するにはどうすればよいですか?

DDD
リリース: 2024-11-27 11:59:13
オリジナル
629 人が閲覧しました

How Can I Efficiently Search for Multiple Substrings within a String in PHP Using Arrays?

配列を使用した strpos: 詳しい説明

PHP では、strpos 関数は別の文字列内で文字列を検索します。複数の文字列を同時に検索したい場合がよくあります。提供されたコードではこのタスクを実行できませんが、検索用語の配列を使用して代替ソリューションを検討できます。

アレイ ニードル用のカスタム関数

1 つのアプローチは、針の配列に対する strpos の機能を模倣するカスタム関数:

function strposa($haystack, $needles=array(), $offset=0) {
    $chr = array();
    foreach($needles as $needle) {
        $res = strpos($haystack, $needle, $offset);
        if ($res !== false) $chr[$needle] = $res;
    }
    if(empty($chr)) return false;
    return min($chr);
}
ログイン後にコピー

この関数は干し草の山の文字列、検索する針の配列、およびオプションのオフセット。最初に出現した針のインデックスを返します。何も見つからなかった場合は false を返します。

改良されたカスタム関数

この関数を強化するには、次の手順を実行します。最初の針が見つかったら検索します:

function strposa(string $haystack, array $needles, int $offset = 0): bool {
    foreach($needles as $needle) {
        if(strpos($haystack, $needle, $offset) !== false) {
            return true; 
        }
    }
    return false;
}
ログイン後にコピー

この更新された関数は、配列内の各針の干し草の山をスキャンし、次のように true を返します。一致するものが見つかるとすぐに。干し草の山に複数の針が存在する可能性がある場合は、より効率的です。

使用例

これらの関数を使用するには、干し草の山の文字列と針の配列を引数として渡すだけです。 .

$string = 'This string contains word "cheese" and "tea".';
$array = ['burger', 'melon', 'cheese', 'milk'];

if(strposa($string, $array)) {
    echo 'true'; // since "cheese" is found
}
ログイン後にコピー

この例では、「cheese」は "cheese" であるため、スクリプトは true を出力します。干し草の山の部分文字列。

以上がPHP で配列を使用して文字列内の複数の部分文字列を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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