정의 및 사용 방법
- PHP 버전
- 5+
str_split() 함수는
문자열을 지정한 길이를 기준으로 나누어 배열로 변환하여 반환합니다.
반환되는 배열의 요소들은 지정한 길이를 기준으로 분할된 부분 문자열로 구성되며, 문자열을 원하는 길이로 쪼개어 관리하기 쉬운 형태로 나누는 데 유용합니다.
특징
- 원본 문자열은 변경되지 않습니다.
- 분할 기준이 되는 문자열의 길이는 바이트 수(1 byte) 기준입니다. 즉, 한글이나 이모지(예: 😃, 🎉 등)와 같은 멀티바이트 문자열에서는 예상과 다른 결과가 나올 수 있습니다.
기본 예제
$str = 'Hello World!';
$arr1 = str_split($str, 1); // 문자열의 길이를 1만큼으로 분할
$arr2 = str_split($str, 3); // 문자열의 길이를 3만큼으로 분할
print_r($arr1);
/* 출력:
Array (
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] =>W
[7] => o
[8] => r
[9] => l
[10] => d
[11] => !
)
*/
print_r($arr2);
/* 출력:
Array (
[0] => Hel
[1] => lo
[2] => Wor
[3] => ld!
)
*/
추가 팁!
preg_split() 함수는 문자열을 정규 표현식 패턴을 기준으로 나누어 배열로 변환합니다.
추가 팁!
explode() 함수는 문자열을 구분자을 기준으로 나누어 배열로 변환합니다.
구문
str_split(string $string, int $length = 1): array
매개변수
$string |
필수. 분할할 대상 문자열입니다. |
|---|---|
$length |
옵션. 각 부분 문자열의 길이를 지정하는 매개변수입니다. 이 매개변수를 생략하면 기본값인 1이 지정됩니다. |
반환 값
매개변수로 전달된 $length 길이의 부분 문자열로 분할하여 배열로 변환해서 반환합니다.
문자열이 지정된 길이로 균등하게 나누어지지 않으면 마지막 요소는 더 짧을 수 있습니다.
이때, 문자열의 길이는 바이트 수(1 byte) 단위 기준입니다. 즉, 멀티바이트 문자열을 지원하지 않습니다.
이 함수의 멀티바이트 지원 버전인 mb_str_split() 함수는 문자열의 길이는 문자 단위 기준이며, 멀티바이트 문자열에서도 안전하게 작동합니다.
변경 이력
| 버전 | 설명 |
|---|---|
| 8.2.0 | PHP 8.2.0 이전에는 분할할 문자열이 빈 문자열('')일 경우 빈 문자열 하나가 포함된 배열이 반환했으나, 8.2.0부터는 빈 배열이 반환됩니다. |
| 8.0.0 | PHP 8.0.0 이전에는 각 부분 문자열의 길이를 지정하는 매개변수가 1보다 작으면 false를 반환했으나, 8.0.0부터는 ValueError가 발생합니다. |
활용 예제
str_split() 함수는 문자열을 부분 문자열로 쉽게 분할할 수 있기 때문에 여러 가지 유용한 상황에서 활용할 수 있습니다.
몇 가지 예제를 살펴보겠습니다.
문자열을 역순으로 출력하기
문자열을 역순으로 출력하려면 str_split() 함수를 사용하여 문자열을 배열로 분할한 다음, array_reverse() 함수를 사용하여 배열을 역순으로 변경할 수 있습니다.
역순으로 바뀐 배열은 다시 implode() 함수를 사용해서 배열을 문자열로 변환합니다.
$str = 'Hello';
$array = str_split($str);
$reversed_array = array_reverse($array);
$reversed_string = implode('', $reversed_array);
echo $reversed_string; // 출력: 'olleH'
코드 부연설명
array_reverse() 함수는 주어진 배열의 요소를 역순(reverse)으로 반환합니다.
코드 부연설명
implode() 함수는 배열의 요소들을 하나의 문자열로 합치는(변환하는) 함수입니다.
주민등록번호 등에서 일부 정보 숨기기
주민등록번호 등의 민감한 정보에서 특정 부분을 숨기려면 str_split() 함수를 사용하여 문자열을 분할한 다음 일부를 수정할 수 있습니다.
$personal_id = '123456-1234567';
$array = str_split($personal_id);
$array_length = count($array);
// 뒷 자리 7자리를 *로 대체
for ($i = 7; $i < $array_length; $i++) {
$array[$i] = '*';
}
$masked_id = implode('', $array);
echo $masked_id; // 출력: '123456-*******'
코드 부연설명
for 문은 특정 횟수나 범위만큼 반복하는 반복문입니다.
위의 예제들은 str_split() 함수를 사용하여 문자열을 쉽게 다룰 수 있는 방법을 보여줍니다. 이 함수는 문자열을 부분 문자열로 나누는 데 유용하며, 이를 통해 문자열을 다양한 방식으로 가공할 수 있습니다.