PHP에서 Stripos 함수는 다른 문자열에서 문자열이 먼저 나타나는 위치를 찾는 데 사용됩니다 (케이스 무시). 그러나 기본적으로 하나의 키워드 만 찾을 수 있습니다. 문자열에서 여러 키워드를 찾고 위치 또는 일치를 반환 해야하는 경우이 기능을 구현하려면 함수를 사용자 정의해야합니다.
여러 키워드를 반복하고 stripos 함수를 호출하여 대상 문자열에서 각 키워드의 위치를 확인할 수 있습니다. 키워드가 발견되면 위치가 기록됩니다. 마지막으로 모든 키워드에 대해 일치하는 결과를 반환 할 수 있습니다. 여기서 배열을 사용하여 여러 키워드에 대한 검색 결과를 저장하고 해당 위치 또는 기타 관련 정보를 반환합니다.
아래는 문자열에서 여러 키워드를 찾고 일치하는 결과를 반환하는 간단한 사용자 정의 기능 구현입니다.
<?php
/**
* 사용자 정의 기능:여러 키워드를 지원합니다 stripos 기능
*
* @param string $haystack 대상 문자열
* @param array $needles 찾을 키워드 배열
* @return array 연관 배열을 반환하십시오,각 키워드의 위치를 포함합니다
*/
function multi_stripos($haystack, $needles) {
$results = [];
foreach ($needles as $needle) {
$position = stripos($haystack, $needle);
if ($position !== false) {
$results[$needle] = $position;
} else {
$results[$needle] = null; // 키워드가없는 경우,반품 null
}
}
return $results;
}
// 예:기능을 사용하여 여러 키워드를 찾으십시오
$text = "당사 웹 사이트에 오신 것을 환영합니다,m66.net풍부한 자원을 제공합니다。";
$keywords = ["m66.net", "의지", "PHP"];
$matches = multi_stripos($text, $keywords);
// 출력 결과
foreach ($matches as $keyword => $position) {
if ($position !== null) {
echo "키워드 '{$keyword}' 위치에서 {$position} 설립하다。\n";
} else {
echo "키워드 '{$keyword}' 찾을 수 없습니다。\n";
}
}
?>
함수 정의 :
두 가지 매개 변수를 취하는 Multi_stripos 라는 함수를 정의합니다.
$ haystack : 대상 문자열.
$ 바늘 : 여러 키워드가 포함 된 배열.
함수 내부에서는 Foreach Loop을 사용하여 각 키워드를 반복하고 Stripos 함수를 호출하여 $ haystack 에서 키워드의 첫 번째 발생을 찾습니다.
키워드가 발견되면 결과 배열 $ 결과 에서 위치를 저장합니다. 찾을 수없는 경우 NULL 이 반환되어 일치하지 않음을 나타냅니다.
기능 호출 :
이 예에서는 웹 사이트의 URL과 설명 텍스트가 포함 된 대상 문자열 $ 텍스트를 정의합니다.
여러 키워드가 포함 된 배열 $ 키워드를 정의하고 Multi_stripos 함수로 전달하여 모든 키워드의 위치를 얻습니다.
결과 출력 :
반환 된 결과 배열을 통과하고 각 키워드의 일치 위치를 출력합니다. 키워드를 찾을 수없는 경우 해당 프롬프트 정보도 출력합니다.
키워드 'm66.net' 위치에서 15 설립하다。
키워드 '의지' 위치에서 22 설립하다。
키워드 'PHP' 찾을 수 없습니다。
이 사용자 정의 기능은 다음과 같은 상황에 매우 적합합니다.
다중 키워드 검색 :이 기능은 텍스트에서 여러 키워드를 찾아야 할 때 매우 유용합니다.
성능 최적화 : StripOS 에 대한 여러 호출과 비교 하여이 방법은 여러 조회 작업을 중앙에서 처리하여 코드의 가독성과 유지 관리를 향상시킬 수 있습니다.
키워드 매칭 위치 획득 : 위치를 찾는 것 외에도 함수를 확장하여 일치하는 전체 단어 또는 컨텍스트와 같은 더 많은 정보를 반환 할 수도 있습니다.
여러 키워드 검색을 지원하는 StripoS 기능을 사용자 정의함으로써 여러 키워드를 동시에 찾는 문제를 효과적으로 해결할 수 있습니다. 이 방법은 간단 할뿐만 아니라 유연하며 실제 요구에 따라 기능을 더 확장 할 수 있습니다.