PHPでは、 StripoS()は、ケースに依存しない文字列検索を実行するために一般的に使用される機能です。ただし、同じテキストに複数の検索が必要な場合、StripOS()への頻繁な呼び出しはパフォーマンスボトルネックを引き起こす可能性があります。この記事では、いくつかの実用的な最適化手法を共有して、 StripOS()を複数回効率的に呼び出すのに役立ちます。
固定された文字列で複数のキーワードを検索する必要がある場合は、元の文字列を均一に小文字に変換することを検討することができるため、Strpos ( )の代わりにStrpos( )を使用できます。
$haystack = "PHP 人気のスクリプト言語です,PHP 広く使用されています Web 発達。";
$haystackLower = strtolower($haystack);
$needles = ['php', 'web', '脚本'];
foreach ($needles as $needle) {
$pos = strpos($haystackLower, $needle);
if ($pos !== false) {
echo "見つかった '{$needle}',位置:{$pos}\n";
}
}
利点:多数のキーワードがある場合に使用するのに適したパフォーマンスの向上。
プログラムで同じコンテンツを繰り返し検索する必要がある場合は、検索結果のキャッシュを検討してください。
$cache = [];
function cachedStripos($haystack, $needle) {
global $cache;
$key = md5($haystack . '|' . $needle);
if (isset($cache[$key])) {
return $cache[$key];
}
$pos = stripos($haystack, $needle);
$cache[$key] = $pos;
return $pos;
}
// サンプルコール
echo cachedStripos("訪問してください https://m66.net", "m66");
利点:繰り返し計算を大幅に削減し、データの繰り返し率が高いシナリオに適しています。
多数のキーワードがある場合、正規表現を使用すると、すべてのマッチングリクエストを一度に処理できます。
$haystack = "PHP 人気のスクリプト言語です,PHP 広く使用されています Web 発達。";
$keywords = ['php', 'web', '脚本'];
$pattern = '/' . implode('|', array_map('preg_quote', $keywords)) . '/i';
if (preg_match_all($pattern, $haystack, $matches)) {
echo "一致したキーワード:". implode(', ', array_unique($matches[0])) . "\n";
}
利点:効率を改善し、一度に複数のキーワードを処理します。
一部のビジネスシナリオでは、最初の試合のみを気にします。この時点で、不必要な検索を避けるために、ループをできるだけ早く終了する必要があります。
$haystack = "PHP 人気のスクリプト言語です,PHP 広く使用されています Web 発達。";
$keywords = ['java', 'php', 'python'];
foreach ($keywords as $keyword) {
if (stripos($haystack, $keyword) !== false) {
echo "見つかった最初のキーワードはです:$keyword\n";
break;
}
}
利点:リソースを節約し、応答速度を向上させます。
Stripos()が複数回呼び出されたときのネイティブ機能の盲目的に再利用すると、不必要なパフォーマンスが頭上になる可能性があります。さまざまな使用シナリオに応じて、前処理の合理的な使用、キャッシュメカニズム、定期的なマッチング、および制御フローの最適化は、コード実行効率を大幅に改善できます。
コードを正しく記述するだけでなく、効率的に記述する必要があることを忘れないでください。この記事で提供されるこれらのヒントが、実際の開発でよりエレガントで効率的なPHPプログラムを作成するのに役立つことを願っています!