현재 위치: > 최신 기사 목록> 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 ()를 사용하여 String $ haystack 에서 $ 니들을 찾아서 그 위치를 반환합니다. 경기가 성공하면 문자열에서 키워드의 시작 위치를 반환합니다. 일치에 도달하지 않으면 False가 반환됩니다.

2. Stripos ()를 사용하여 여러 키워드의 퍼지 검색을 구현하는 방법은 무엇입니까?

여러 키워드의 퍼지 검색을 달성하기 위해 가장 쉬운 방법은 stripos ()를 사용하여 각 키워드를 루프하는 것입니다. 키워드 중 하나가 발견되면 일치하는 결과를 반환 할 수 있습니다. 우리는 이것을 할 수 있습니다 :

 <?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";
}
?>

위의 코드에서는 while loop을 통해 $ haystack 에 나타나는 모든 키워드를 검색합니다. 경기가 발견 될 때마다 검색 위치를 업데이트하고 다음 경기를 계속 찾으십시오. 마지막으로, 모든 일치하는 정보는 $ matches 배열에 저장되며 모든 일치하는 결과는 하나씩 출력됩니다.

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 () 함수를 사용합니다. Implode ( '|', $ beenles)는 모든 키워드를 정규 표현식으로 연결합니다 . "또는"를 의미하므로 여러 키워드가 동시에 일치에서 찾을 수 있습니다. preg_offset_capture 옵션은 일치하는 특정 위치를 반환합니다.

요약

Stripos () 는 매우 간단하고 효율적인 기능이지만 단일 키워드 만 찾는 데 사용할 수 있습니다. 여러 키워드를 찾아야하는 경우 루프 나 일반 표현식을 통해 달성 할 수 있습니다. 정규 표현식은 요구가 더 복잡하거나 더 유연한 패턴 일치가 필요한 경우 강력한 도구입니다.

위의 방법을 통해 PHP에서 여러 키워드의 퍼지 검색을 유연하게 실현하고 필요에 가장 적합한 솔루션을 선택하여 업무 효율성을 향상시킬 수 있습니다.