php에서 str_split () 는 일반적으로 사용되는 문자열 세그먼테이션 함수로 문자열을 여러 개의 작은 문자 배열로 분할 할 수 있습니다. 일반적으로 str_split ()는 문자열을 문자 순서로 나누고 순서대로 배열 된 배열을 반환합니다. 그러나 일부 특별한 경우, str_split ()를 사용하는 경우 반환 된 배열 순서에 예외가있을 수 있습니다.
먼저 str_split () 함수를 사용하는 방법 인 기본 예제를 살펴 보겠습니다.
<?php
$string = "hello";
$array = str_split($string);
print_r($array);
?>
이 코드는 다음 배열을 출력합니다.
Array
(
[0] => h
[1] => e
[2] => l
[3] => l
[4] => o
)
보시다시피, str_split () 함수는 문자별로 문자열을 순서대로 배열 된 배열로 나눕니다.
그러나 때로는 str_split ()를 사용하여 반환 된 배열 순서가 잘못된 것 같습니다. 이 문제의 원인은 다양 할 수 있으며 다음은 몇 가지 가능한 시나리오와 솔루션을 나열합니다.
PHP는 기본적으로 UTF-8 인코딩을 사용합니다. 문자열에 멀티 바이트 문자 (예 : 중국어, 일본어 등)가 포함 된 경우 str_split ()는 이러한 문자를 올바르게 처리하지 못할 수 있습니다. 다중 바이트 문자의 경우 str_split ()는 문자를 실제 문자로 나누는 대신 문자를 바이트로 분할합니다.
솔루션 : 멀티 바이트 문자의 경우 바이트 대신 문자열의 문자를 올바르게 분할하는 MB_STR_SPLIT () 함수 ( MBSTRING EXTENSION을 활성화해야 함)를 사용할 수 있습니다.
<?php
$string = "안녕하세요";
$array = mb_str_split($string);
print_r($array);
?>
이러한 방식으로 반환 된 결과는 다음과 같습니다.
Array
(
[0] => 너
[1] => 좋은
)
때로는 문자열에 공백, 선 파단 등과 같은 보이지 않는 문자가 포함되어있어 분할 후 배열의 순서 및 내용에 영향을 미칩니다.
솔루션 : Trim () 함수를 사용하여 문자열의 양쪽 끝에서 흰색 스페이스 문자를 제거하거나 str_replace ()를 사용하여 문자열에서 보이지 않는 문자를 삭제할 수 있습니다.
<?php
$string = " hello ";
$string = trim($string); // 양쪽 끝에서 공백 문자를 제거하십시오
$array = str_split($string);
print_r($array);
?>
str_split () 함수는 옵션 매개 변수 $ 길이를 가지고 있으며 각 배열 요소의 최대 길이를 나타냅니다. 길이로 통과하면 PHP는 스트링을 그 길이로 나눕니다. $ 길이 값이 부적절하게 설정되면 예상대로 분할이 발생할 수 있습니다.
솔루션 : $ 길이 매개 변수를 확인하여 올바르게 설정되었는지 확인하십시오. 예를 들어, 각 배열 요소가 2자를 포함하려면 다음을 작성할 수 있습니다.
<?php
$string = "abcdef";
$array = str_split($string, 2); // 모든2캐릭터 세트
print_r($array);
?>
출력은 다음과 같습니다.
Array
(
[0] => ab
[1] => cd
[2] => ef
)
STR_SPLIT () 함수는 대부분의 경우 예상대로 작동하지만 반환 된 배열의 잘못된 순서가 발생하면 다음 방법을 통해 디버깅 할 수 있습니다.
문자열 인코딩이 정확한지, 특히 멀티 바이트 문자의 경우 MB_STR_SPLIT ()를 사용할 수 있습니다.
문자열에 보이지 않는 문자가 포함되어 있는지 확인하고 처리에 Trim () 또는 str_replace ()를 사용하십시오.
분할 길이 매개 변수 $ 길이가 올바르게 설정되어 있는지 확인하십시오.
위의 방법을 사용하면 str_split () 함수가 잘못된 순서를 반환하는 문제를 해결할 수 있어야합니다.