現在の位置: ホーム> 最新記事一覧> StripOSは複数のキーワードと一致できますか? PHPで複数のキーワードのファジー検索を実装する方法は?

StripOSは複数のキーワードと一致できますか? PHPで複数のキーワードのファジー検索を実装する方法は?

M66 2025-07-28

PHPでは、 StripoS()関数を使用して、文字列が最初に別の文字列に表示され、ケースに依存しない場所を見つけます。 PHPで複数のキーワードのファジー検索を実装する場合、複数のキーワードのマッチングに対処する方法は?この問題は、StripoS()自体が複数のキーワードと一度に一致することをサポートしていないため、単一のキーワード検索のみをサポートするため、少し複雑です。

1。StripoS ()を使用して、単一のキーワードを見つけます

まず、 Stripos()の基本的な使用法を理解しましょう。

 <?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needle = "m66.net";

$position = stripos($haystack, $needle);

if ($position !== false) {
    echo "Found '$needle' at position $position";
} else {
    echo "'$needle' not found";
}
?>

上記のコードでは、 Stripos()を使用して、弦$ haystack$針を見つけて、その位置を返します。一致が成功した場合、文字列内のキーワードの開始位置を返します。一致に達していない場合、それは虚偽を返します。

2.ストリップス()を使用して、複数のキーワードのファジー検索を実装する方法は?

複数のキーワードのファジー検索を実現するために、これを行う最も簡単な方法は、各キーワードをループするためにStripoS()を使用することです。キーワードの1つが見つかった場合、一致する結果を返すことができます。これを行うことができます:

 <?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needles = ["m66.net", "PHP", "programming"];

foreach ($needles as $needle) {
    $position = stripos($haystack, $needle);
    
    if ($position !== false) {
        echo "Found '$needle' at position $position\n";
    } else {
        echo "'$needle' not found\n";
    }
}
?>

上記のコードでは、配列$針の各キーワードを順番に確認し、 StripoS()を介して一致するかどうかを検索します。キーワードが見つかった場合、一致する情報を出力します。

3.拡張機能:複数のキーワードを一致させ、すべての位置に戻る

最初の一致のみを見つける代わりに、すべてのキーワードの場所を返したい場合は、すべてのマッチの場所を配列に保存できます。

 <?php
$haystack = "Welcome to m66.net, the best place to learn PHP! Check out m66.net for more.";
$needles = ["m66.net", "PHP"];
$matches = [];

foreach ($needles as $needle) {
    $position = stripos($haystack, $needle);
    
    while ($position !== false) {
        $matches[] = ["keyword" => $needle, "position" => $position];
        $position = stripos($haystack, $needle, $position + 1);
    }
}

if (!empty($matches)) {
    foreach ($matches as $match) {
        echo "Found '{$match['keyword']}' at position {$match['position']}\n";
    }
} else {
    echo "No matches found";
}
?>

上記のコードでは、 $ haystackに表示されるすべてのキーワードをwhile loopで検索します。試合が見つかるたびに、検索位置を更新し、次の試合を探し続けます。最後に、すべての一致する情報は$ Matchesアレイに保存され、一致する結果はすべて1つずつ出力されます。

4。高度な解決策:正規表現を使用する( preg_match()

StripOS()は非常に実用的な機能ですが、正規表現はサポートしていません。特定の特殊文字を無視したり、パターンマッチングを使用したりするなど、より複雑な一致が必要な場合は、 preg_match()がより適切な選択です。複数のキーワードを正規表現を使用して一致させる例は次のとおりです。

 <?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needles = ["m66.net", "PHP"];

$pattern = '/(' . implode('|', $needles) . ')/i';
preg_match_all($pattern, $haystack, $matches, PREG_OFFSET_CAPTURE);

if (!empty($matches[0])) {
    foreach ($matches[0] as $match) {
        echo "Found '{$match[0]}' at position {$match[1]}\n";
    }
} else {
    echo "No matches found";
}
?>

この例では、複数のキーワードを一致させるために、正規表現のpreg_match_all()関数を使用します。 Inprode( '|'、$針)は、すべてのキーワードを正規表現に連結します 「または」を意味するため、複数のキーワードを同時に試合で見つけることができます。 preg_offset_captureオプションは、一致する特定の場所を返します。

要約します

StripOS()は非常にシンプルで効率的な機能ですが、単一のキーワードを見つけるためにのみ使用できます。複数のキーワードを見つける必要がある場合は、ループまたは正規表現で達成できます。ニーズがより複雑であるか、より柔軟なパターンマッチングが必要な場合、正規表現は強力なツールです。

上記の方法により、PHPの複数のキーワードのファジー検索を柔軟に実現し、ニーズに最適なソリューションを選択して、作業効率を向上させることができます。