현재 위치: > 최신 기사 목록> PHP에서 strncmp 함수를 사용하여 두 배열의 문자열 접두사가 일치하는지 여부를 결정하는 방법은 무엇입니까? 작동 방법에 대한 자세한 설명

PHP에서 strncmp 함수를 사용하여 두 배열의 문자열 접두사가 일치하는지 여부를 결정하는 방법은 무엇입니까? 작동 방법에 대한 자세한 설명

gitbox 2025-07-18

PHP 프로그래밍에서는 종종 문자열 비교 작업, 특히 URL, 네임 스페이스 또는 파일 경로와 같은 특정 접두사가있는 시나리오에서 처리해야합니다. strncmp () 함수는 두 문자열이 첫 번째 N 문자에서 동일인지 비교하는 데 사용할 수있는 효율적인 도구입니다. 이 기사는 strncmp ()를 사용하여 2 개의 배열에서 해당 문자열의 접두사가 일치하는지 여부를 결정하는 방법을 자세히 설명합니다.

1. strncmp () 함수 소개

strncmp () 는 두 문자열의 접두사 부분을 문자 수로 비교하는 PHP의 내장 함수입니다. 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-keyword">int</span></span><span> </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">$string1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string2</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>
  • $ string1$ string2 는 비교할 두 줄입니다.

  • $ 길이는 비교할 문자 수입니다 (처음부터 시작).

  • 반환 값은 다음과 같습니다.

    • 0은 접두사가 동일하다는 것을 의미합니다.

    • 0 미만은 $ string1 의 접두사가 사전 순서에서 $ String2 미만임을 의미합니다.

    • 0 보다 큰 접두사는 $ string1이 사전 순서에서 $ String2 보다 크다는 것을 의미합니다.

2. 사용 시나리오 : 두 배열의 문자열 접두사가 일치하는지 여부를 결정합니다.

문자열 세트가 포함 된 두 개의 배열이 있다고 가정 해 봅시다. 이제이 두 배열의 각 문자열 쌍의 접두사 (지정된 값의 길이)가 동일인지 확인하려고합니다.

샘플 코드는 다음과 같습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">'apple123'</span></span><span>, </span><span><span class="hljs-string">'banana456'</span></span><span>, </span><span><span class="hljs-string">'cherry789'</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">'appleXYZ'</span></span><span>, </span><span><span class="hljs-string">'bananaABC'</span></span><span>, </span><span><span class="hljs-string">'cheese000'</span></span><span>];
</span><span><span class="hljs-variable">$prefixLength</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = [];

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array1</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> =&gt; </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-variable">$array2</span></span><span>[</span><span><span class="hljs-variable">$index</span></span><span>] ?? </span><span><span class="hljs-string">''</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-variable">$prefixLength</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-string">"1. "</span></span><span> . (</span><span><span class="hljs-variable">$index</span></span><span> + </span><span><span class="hljs-number">1</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-variable">$result</span></span><span>[] = </span><span><span class="hljs-string">"1. "</span></span><span> . (</span><span><span class="hljs-variable">$index</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>) . </span><span><span class="hljs-string">" 오른쪽:접두사 불일치"</span></span><span>;
    }
}

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span> . PHP_EOL;
}
</span></span>

출력 결과는 다음과 같습니다.

 <span><span>1. 1 오른쪽:접두사 매칭
1. 2 오른쪽:접두사 매칭
1. 3 오른쪽:접두사 불일치
</span></span>

3. 실제 지침

  1. 어레이 길이의 일관성이없는 상황 : 위의 예는 사용합니까 ?? `` 배열 외부 오류를 피하기 위해. 실제 요구에 따라보다 엄격한 배열 길이 검사를 수행 할 수 있습니다.

  2. 접두사 길이 결정 : 적절한 $ 길이를 선택하는 것은 매우 중요합니다. 비교 길이가 실제 문자열 길이를 초과하면 오류가보고되지 않지만 부정확 한 비교 결과가 발생할 수 있습니다.

  3. 사례를 무시하십시오 : 비교를 위해 사례를 무시하려면 strtolower () 또는 strtoupper ()를 사용하여 문자열을 균일하게 처리 할 수 있습니다.

예:

 <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-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>), </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$str2</span></span><span>), </span><span><span class="hljs-variable">$prefixLength</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-comment">// 忽略大小写접두사 매칭</span></span><span>
}
</span></span>

4. 요약

PHP 개발자는 strncmp () 함수를 통해 두 문자열의 접두사가 일관성이 있는지 쉽게 비교할 수 있습니다. 특히 경로 일치, 키워드 추출 및 분류 인식과 같은 시나리오를 처리하는 데 특히 적합합니다. 배열 작업에 사용하면 유용성을 더 잘 반영 할 수 있습니다. 이 기능을 마스터하면 문자열 처리의 효율성과 정확성이 향상됩니다.