현재 위치: > 최신 기사 목록> 익스플로잇 함수를 사용한 후 얻은 배열 길이가 기대치를 충족하지 않는 이유는 무엇입니까? 비정상적인 착취 기능의 일반적인 원인 분석

익스플로잇 함수를 사용한 후 얻은 배열 길이가 기대치를 충족하지 않는 이유는 무엇입니까? 비정상적인 착취 기능의 일반적인 원인 분석

gitbox 2025-06-08

PHP의 exploit () 함수를 사용하는 경우 많은 개발자가 결과 배열 길이가 기대치를 충족하지 않는 상황을 만날 수 있습니다. exploit () 함수의 목적은 문자열을 여러 하위 문자로 분할하고 배열을 반환하는 것입니다. 이론적으로, exploit () 함수는 문자열을 구분 기호로 둘러싸인 여러 부분으로 분할하고 올바른 길이의 배열을 반환해야합니다. 그러나 때로는 반환 된 배열 길이가 예상대로 아닐 수도 있으며, 이의 원인은 일반적으로 일부 세부 사항 때문입니다.이 기사는 일반적인 원인을 분석합니다.

exploit () 함수의 기본 사용

exploit () 함수의 기본 구문은 다음과 같습니다.

 array explode(string $delimiter, string $string[, int $limit = PHP_INT_MAX])
  • $ delimiter : 끈을 분할하는 데 사용되는 Delimiter.

  • $ string : 나뉘어 질 문자열.

  • $ 한도 (선택 사항) : 반환 된 배열 길이를 제한합니다. $ 한도가 설정되지 않으면 모든 분할 부품이 반환됩니다.

예:

 $string = "apple,banana,orange";
$result = explode(",", $string);
print_r($result);

출력은 다음과 같습니다.

 Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)

그러나 실제 응용 분야에서 우리는 우리를 혼란스럽게하는 몇 가지 상황에 직면 할 수 있으며 결과 배열 길이는 예상대로 분할되지 않을 수 있습니다. 다음으로 몇 가지 일반적인 상황을 분석합니다.


일반적인 원인 분석

1. Delimiter는 빈 문자열이거나 존재하지 않습니다.

$ delimiter 가 빈 문자열이거나 $ string$ delimiter가 존재하지 않으면 exploit () 함수는 원래 문자열이 포함 된 배열을 반환합니다. 예를 들어:

 $string = "apple,banana,orange";
$result = explode("", $string);  // delimiter is an empty string
print_r($result);

이 예에서, 구분 기자는 빈 문자열이므로 반환 된 배열은 각 문자를 배열 요소로 포함합니다.

2. 빈 문자 또는 공백 문자 처리

분할 될 문자열 $ 문자열이 비어 있거나 공백 문자 (예 : 공백, 줄 브레이크 등)가 포함 된 경우, exploit ()는 길이 1의 배열을 반환하고 배열의 유일한 요소는 원래 문자열입니다. 문자열을 분할 할 유효한 구분 기가 없기 때문입니다.

 $string = "";
$result = explode(",", $string);
print_r($result);

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

 Array
(
    [0] => 
)

마찬가지로, 문자열이 "" " 와 같은 공백 문자로만 구성되면, exploit ()는 공백 문자로 빈 문자열이 포함 된 배열을 반환합니다.

3. 한계 매개 변수 사용

한계 매개 변수는 exploit () 함수에서 매우 중요한 매개 변수입니다. $ 한계가 설정되면 반환 된 배열 길이는 이에 의해 제한됩니다. 예를 들어, $ 한도가 나누어야 할 부품 수보다 적을 때 배열의 마지막 요소에는 나머지 모든 부품이 포함됩니다.

 $string = "apple,banana,orange,grape";
$result = explode(",", $string, 3);
print_r($result);

출력 결과 :

 Array
(
    [0] => apple
    [1] => banana
    [2] => orange,grape
)

위에서 볼 수 있듯이 한계 설정으로 인해 반환 된 배열에는 세 개의 요소 만 포함되며 마지막 요소에는 나머지 모든 부분이 포함됩니다.

4. 꼬리에 분리기가 있습니다

문자열의 꼬리에 분리기가 포함 된 경우, exploit ()는 테일 빈 문자열을 배열의 요소로 사용합니다. 예를 들어, 문자열이 "Apple, Banana" 이고 Delimiter가 IS , round () 는 끝에 빈 요소를 추가합니다.

 $string = "apple,banana,";
$result = explode(",", $string);
print_r($result);

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

 Array
(
    [0] => apple
    [1] => banana
    [2] => 
)

이 경우 빈 요소의 끝을 기대하지 않으면 추가 요소가 배열 길이에 추가됩니다.

5. 문자열에는 여러 연속 분리기가 포함되어 있습니다

문자열에 여러 연속 분리기가 나뉘어 질 때, exploit ()는 이러한 연속 분리기를 다중 분리기로 취급하며 결과는 빈 문자열의 배열 요소가 생성됩니다.

예를 들어:

 $string = "apple,,banana,,orange";
$result = explode(",", $string);
print_r($result);

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

 Array
(
    [0] => apple
    [1] => 
    [2] => banana
    [3] => 
    [4] => orange
)

여러 연속 쉼표는 배열에 여러 개의 빈 요소를 일으 킵니다.