현재 위치: > 최신 기사 목록> 빈 문자열이 발생할 때 MB_SUBSTR_COUNT는 무엇을 반환합니까? 결과 분석 및 예방 조치

빈 문자열이 발생할 때 MB_SUBSTR_COUNT는 무엇을 반환합니까? 결과 분석 및 예방 조치

gitbox 2025-09-02

PHP에서 MB_SUBSTR_COUNT 함수는 다른 하위 문자열이 문자열에 나타나는 횟수를 계산하는 데 사용됩니다. 이 함수는 UTF-8 인코딩과 같은 멀티 바이트 문자를 포함하는 문자열을 처리하는 데 특별히 사용되는 MBSTRING (Multibyte String Extension)의 일부입니다. substr_count 와 달리 MB_SUBST_COUNT는 멀티 바이트 문자를 처리 할 때 문자 수를 올바르게 계산할 수 있습니다.

그러나 mb_substr_count를 사용하고 빈 문자열을 매개 변수로 전달할 때 결과는 정확히 무엇을 반환합니까? 이 기사는 빈 문자열이 발생할 때 MB_SUBSTR_COUNT 기능의 동작을 분석하고 몇 가지 예방 조치를 제공합니다.

mb_substr_count 함수의 기본 사용

mb_substr_count 의 기능 프로토 타입은 다음과 같습니다.

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>);
</span></span>
  • $ haystack : 검색 된 대상 문자열.

  • $ 바늘 : 대상 문자열에서 찾을 부분 문자열.

  • $ 인코딩 : 옵션 매개 변수, 문자 인코딩을 지정합니다. 내부 문자 인코딩은 기본적으로 사용됩니다.

이 기능은 $ 횟수 ** $ 바늘이 $ haystack ** 나타납니다.

1. MB_SUBSTR_COUNT가 빈 문자열을 기판으로 만날 때의 동작

PHP 문서에 따르면 빈 문자열을 MB_SUBST_COUNT 함수로 기판 (즉 , $ 니들 )으로 전달한다고 가정하면, 반환 값은 대상 문자열에 포함 된 하위 문자열의 발생 수 입니다.

예 1 : 바늘 로 비어있는 서브 스트링

 <span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$count</span></span><span>;  </span><span><span class="hljs-comment">// 산출:0</span></span><span>
</span></span>

위의 코드에서 $ 니들은 빈 문자열입니다. 대상 문자열 $ Haystack은 비어 있지 않지만 PHP는 빈 문자열을 "나타나지 않은 하위 문자"로 취급합니다. 따라서 함수는 0을 반환합니다.

2. 빈 대상 문자열이 건초 더미 로 사용되는 경우 동작

대상 문자열 $ haystack이 mb_substr_count 로 전달 된 경우 빈 문자열 (예 : $ haystack = "" ) 인 경우 $ 니들 에 관계없이 반환 값은 0이됩니다. 빈 문자열은 서브 스트링에 관계없이 모든 하위 문자열을 포함 할 수 없기 때문입니다.

예제 2 : 비어있는 대상 문자열은 건초 더미입니다

 <span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$count</span></span><span>;  </span><span><span class="hljs-comment">// 산출:0</span></span><span>
</span></span>

여기에서 $ 니들이 "hello"이지만 빈 문자열 $ haystack에는 아무것도 포함되어 있지 않으므로 0을 반환합니다.

3. 빈 줄의 특별한 상황 요약

위의 두 가지 예에서 MB_SUBST_COUNT가 빈 줄로 직관적으로 동작한다는 것을 알 수 있습니다.

  • 기판이 비어 있으면 서브 스트링이 일치 할 수 없으므로 0을 반환하십시오.

  • 대상 문자열이 비어 있으면 빈 문자열에 하위 문자열이 포함될 수 없으므로 0이 반환됩니다.

이 두 상황은 MB_Substr_Count 함수에서 비교적 일반적인 "경계 상황"이며 사용할 때는주의를 기울여야합니다.

4. 성능 고려 사항

빈 문자열의 동작은 대부분의 경우 문제가되지 않지만 코드 가독성 및 효율성을 향상시키기 위해 빈 문자열을 MB_SUBSTR_COUNT 로 매개 변수로 전달하는 것을 피하는 것이 좋습니다. $ 니들이 빈 문자열 인 경우 MB_SUBST_COUNT를 호출하기 전에 간단한 점검을하는 것이 좋습니다.

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$needle</span></span><span> !== </span><span><span class="hljs-string">""</span></span><span>) {
    </span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
}
</span></span>

이는 불필요한 기능 호출을 줄이고 프로그램 성능을 향상시킬 수 있습니다.

5. 요약 및 예방 조치

  1. 바늘 로 빈 문자열 : MB_SUBSTR_COUNT 하부 문자열이 비어있을 때 0을 반환합니다.

  2. 비어있는 문자열은 haystack : mb_substr_count 도 대상 문자열이 비어있을 때 0을 반환합니다.

  3. 성능 최적화 : 빈 줄을 바늘 로 전달하지 않으면 확인 후 MB_SUBSTR_COUNT 에 호출하면 효율성이 향상 될 수 있습니다.

이러한 세부 사항을 이해하면 개발자가 PHP 코드를 작성할 때 불필요한 오류 및 성능 문제를 피할 때 MB_SUBSTR_COUNT를 더 잘 사용할 수 있습니다.