현재 위치: > 최신 기사 목록> [strncmp 함수 사례는 민감합니까? PHP의 STRNCMP 사례 민감도에 대한 문제 및 솔루션]

[strncmp 함수 사례는 민감합니까? PHP의 STRNCMP 사례 민감도에 대한 문제 및 솔루션]

gitbox 2025-08-22

1. strncmp 함수의 기본 사용

strncmp 함수의 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
  • $ str1 : 첫 번째 문자열.

  • $ str2 : 두 번째 문자열.

  • $ 길이 : 비교할 문자 수.

strncmp 함수는 두 줄의 시작부터 시작되며 대부분 의 길이 는 비교됩니다. 다음과 같은 가능한 값을 반환합니다.

  • 0 : 첫 번째 길이 문자가 같음을 의미합니다.

  • 0보다 큰 $ str1 의 첫 번째 길이 문자는 $ str2 의 첫 번째 길이 문자보다 큽니다.

  • 0 미만 : $ str1 의 첫 번째 길이 문자는 $ str2 의 첫 번째 길이 문자보다 작음을 의미합니다.

2. strncmp 사례는 민감합니까?

strncmp 함수는 사례에 민감합니다 . 즉, "Hello""Hello"를 STRNCMP 와 비교하면 이니셜을 제외하고 두 문자열이 정확히 동일하더라도 함수는 여전히 동일하지 않다고 생각합니다. 다음 예를 참조하십시오.

 <span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"두 줄은 동일합니다"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"두 줄은 다릅니다"</span></span><span>;
}
</span></span>

출력은 다음과 같습니다.

 <span><span>두 줄은 다릅니다
</span></span>

"hello""hello" 는 콘텐츠에 대한 사례 차이 만 있지만 strncmp는 기본적으로 사례에 민감하기 때문에 불평등하다고 생각합니다.

3. 사례 민감도의 문제를 해결하는 방법은 무엇입니까?

비교할 때 strncmp가 대소 문자를 사용하지 않으려면 strncasecmp 함수를 사용할 수 있습니다. strncasecmp 는 사례에 민감한 버전이며 사용량은 strncmp 와 유사합니다.

 <span><span><span class="hljs-title function_ invoke__">strncasecmp</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>

strncasecmp 함수는 두 문자열의 첫 번째 길이 문자를 비교할 때 사례 차이를 무시합니다. 예는 다음과 같습니다.

 <span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncasecmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"두 줄은 동일합니다"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"두 줄은 다릅니다"</span></span><span>;
}
</span></span>

출력은 다음과 같습니다.

 <span><span>두 줄은 동일합니다
</span></span>

위에서 볼 수 있듯이, strncasecmp 함수는 "hello""hello" 의 사례 차이를 무시하고 그것들을 동일하게 간주합니다.

4. 요약

  1. strncmp 함수는 문자열을 비교할 때 사례에 민감합니다 .

  2. 사례에 민감한 비교를 해야하는 경우 strncasecmp 함수를 사용할 수 있습니다.

실제 개발에서는 문자열 비교 결과가 기대와 일치하도록하기 위해 특정 요구에 따라 strncmp 또는 strncasecmp를 사용하도록 선택해야합니다. 사용자 입력, 양식 데이터 또는 데이터베이스 쿼리 결과를 처리 할 때 이러한 기능 간의 차이점을 이해하는 것이 특히 중요합니다.