配列を使用した 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 サイトの他の関連記事を参照してください。