현재 위치: > 최신 기사 목록> 익스플로잇 함수가 연속 구분 기호를 만나면 어떻게됩니까? 이 상황을 올바르게 다루는 방법은 무엇입니까?

익스플로잇 함수가 연속 구분 기호를 만나면 어떻게됩니까? 이 상황을 올바르게 다루는 방법은 무엇입니까?

gitbox 2025-08-26

PHP에서, exploit () 함수는 일반적으로 사용되는 문자열 처리 도구로, 지정된 분리기에 따라 문자열을 배열로 분할 할 수 있습니다. 그러나 실제적으로 사용하면 Delimiters가 문자열에 지속적으로 나타날 때 Exploit () 의 동작은 초보자를 혼동 할 수 있습니다. 이 기사는이 상황을 깊이 탐구하고 몇 가지 올바른 접근법을 소개합니다.

1. exploit ()의 기본 사용

exploit () 의 구문은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$separator</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$limit</span></span><span> = PHP_INT_MAX): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>

$ Separator가 구분자 인 경우 $ string 은 분할 될 문자열이고 $ 한계는 선택적 매개 변수이며, 이는 반환 된 배열에 포함 된 최대 요소 수를 나타냅니다.

일반적인 예 :

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,banana,orange"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-comment">// $result ~을 위한 ["apple", "banana", "orange"]</span></span><span>
</span></span>

2. 연속 분리기의 동작

Delimiters가 연속적으로 나타나는 경우, Exploit () 의 동작은이를 다수의 구분 제조물 로 취급하는 것입니다. 예를 들어:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,,banana,,,orange"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-comment">// $result ~을 위한 ["apple", "", "banana", "", "", "orange"]</span></span><span>
</span></span>

두 개의 쉼표 빈 값의 삽입 지점으로 해석되는 것을 알 수 있으며, 각각 3 개의 쉼표에 대해서도 마찬가지입니다 . 각각 두 개의 빈 줄을 삽입합니다.

이 동작은 사용자 입력 또는 CSV 형식 데이터를 처리 할 때 문제를 일으킬 수 있습니다. 많은 NULL 값이 배열에 나타날 것으로 기대하지 않을 수 있습니다.

3. 연속 분리기를 올바르게 처리하는 방법

방법 1 : array_filter ()를 사용하여 널 값을 제거하십시오

가장 쉬운 방법은 Array_Filter ()를 사용하여 배열에서 빈 줄을 제거하는 것입니다.

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,,banana,,,orange"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>), function(</span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span> !== </span><span><span class="hljs-string">""</span></span><span>;
});
</span><span><span class="hljs-comment">// $result ~을 위한 ["apple", "banana", "orange"]</span></span><span>
</span></span>

참고 : Array_Filter ()는 기본적으로 "0"을 포함하여 모든 "false 값"을 제거합니다. "0"을 유지하려면 위의 예와 같이 사용자 정의 콜백 함수를 전달해야합니다.

방법 2 : preg_split ()를 사용하여 일반 분리기를 지원하십시오

연속 분리기 전체가 전체적으로 보이도록하려면 (즉, 다중 쉼표가 분리기로 취급됨) preg_split ()를 사용할 수 있습니다.

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,,banana,,,orange"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_split</span></span><span>(</span><span><span class="hljs-string">"/,+/"</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-comment">// $result ~을 위한 ["apple", "banana", "orange"]</span></span><span>
</span></span>

이런 식으로, 연속 쉼표가 얼마나 많은지 상관없이 분리 지점으로 간주됩니다.

방법 3 : 스플릿 수를 제한합니다

일부 시나리오에서는 처음 몇 값 만 분할하고 나머지는 전체적으로 예약되어 있으며 $ 한계 매개 변수를 사용할 수 있습니다.

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,,banana,,,orange"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>);
</span><span><span class="hljs-comment">// $result ~을 위한 ["apple", "", "banana,,,orange"]</span></span><span>
</span></span>

4. 요약

exploit () 는 PHP에서 매우 유용한 문자열 분할 도구이지만 연속 구분자를 만나면 동작이 기대치와 일치하지 않을 수 있습니다. array_filter () 또는 preg_split ()를 사용하는 것과 같은 특정 비즈니스 요구에 따라 메커니즘을 이해하고 적절한 처리 방법을 선택하면 문자열 데이터를보다 효과적으로 제어하고 정리하고 논리적 오류를 피할 수 있습니다.

도구 및 처리 로직을 합리적으로 선택하는 것은 모든 PHP 개발자가 가져야 할 기본 기술입니다.