PHP의 substr_count() 함수는 하나의 문자열 안에서 특정 부분 문자열(서브스트링)이 몇 번 등장하는지 그 횟수를 세는 데 사용됩니다.
문법(Syntax)
substr_count(str, substr, begin, len)
매개변수(Parameters)
str − 검사 대상이 되는 원본 문자열입니다.
substr − 문자열 안에서 찾고자 하는 부분 문자열입니다.
begin − 검색을 시작할 위치(오프셋)를 지정합니다. 선택 사항이며 기본값은 0, 즉 문자열 처음부터 검색합니다.
len − 검색 범위의 길이를 지정합니다. 선택 사항으로, begin 위치부터 len만큼의 구간 안에서만 부분 문자열을 셉니다.
반환 값(Return)
substr_count() 함수는 지정한 문자열 내에서 부분 문자열이 나타난 횟수를 정수(int)로 반환합니다. 부분 문자열이 한 번도 발견되지 않으면 0을 반환합니다.
예제(Example)
다음은 substr_count() 함수의 기본적인 사용 예시입니다 −
<?php $str = 'This is our example!'; echo strlen($str); echo "\n"; echo substr_count($str, 'our'); ?>
출력 결과(Output)
20 1
위 예제에서 strlen($str)은 문자열 전체 길이인 20을 출력하고, substr_count($str, 'our')는 문자열에 포함된 'our'라는 부분 문자열의 개수인 1을 반환합니다.
begin과 len 매개변수 활용하기
세 번째와 네 번째 매개변수를 사용하면 검색 범위를 제한할 수 있습니다.
<?php $str = 'Hello World Hello'; echo substr_count($str, 'Hello', 6); // 6번째 위치 이후부터 검색 → 1 ?>
위 코드는 6번째 오프셋부터 문자열 끝까지만 검사하므로 뒤쪽의 'Hello' 한 번만 카운트하여 1을 반환합니다.
주의 사항
substr_count() 함수는 대소문자를 구분합니다. 따라서 'Hello'를 찾을 때 'hello'는 매칭되지 않습니다.
겹치는(overlapping) 부분 문자열은 중복 계산되지 않습니다. 예를 들어
substr_count('aaaa', 'aa')의 결과는 3이 아닌 2입니다.begin과 len을 더한 값이 문자열 길이를 초과하면 PHP 8.0부터는
ValueError가 발생하고, 그 이전 버전에서는 경고와 함께 false를 반환합니다.