php에서 stripos () 함수는 문자열이 다른 문자열에서 먼저 나타나는 위치를 찾는 데 사용되며 케이스에 민감합니다. PHP에서 여러 키워드의 퍼지 검색을 구현하려면 여러 키워드의 일치를 처리하는 방법은 무엇입니까? 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가 반환됩니다.
여러 키워드의 퍼지 검색을 달성하기 위해 가장 쉬운 방법은 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 () 를 통해 일치하는지 여부를 검색합니다. 키워드가 발견되면 일치하는 정보가 출력됩니다.
첫 번째 경기 만 찾는 대신 모든 키워드의 위치를 반환하려면 모든 경기의 위치를 배열에 저장할 수 있습니다.
<?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 배열에 저장되며 모든 일치하는 결과는 하나씩 출력됩니다.
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에서 여러 키워드의 퍼지 검색을 유연하게 실현하고 필요에 가장 적합한 솔루션을 선택하여 업무 효율성을 향상시킬 수 있습니다.