PHP에서는 preg_split 또는 explode 함수를 사용하여 쉼표로 구분된 문자열을 값 배열로 손쉽게 분할할 수 있습니다. 두 함수의 실제 동작 방식을 예제 코드와 함께 살펴보겠습니다.
예제 코드
<?php
$my_string = "456,789,23, 4, 019";
$my_str_arr = preg_split ("/,/", $my_string);
print_r("The array is ");
print_r($my_str_arr);
$my_string = "00, 876, 5432, 1234, 0";
$my_str_arr = explode (",", $my_string);
print_r("The array is ");
print_r($my_str_arr);
?>실행 결과
The array is Array
(
[0] => 456
[1] => 789
[2] => 23
[3] => 4
[4] => 019
)
The array is Array
(
[0] => 00
[1] => 876
[2] => 5432
[3] => 1234
[4] => 0
)코드 설명
먼저 숫자들이 쉼표로 구분된 문자열을 변수에 저장합니다. 그다음 preg_split 함수를 호출하여 정규 표현식 패턴 /,/를 기준으로 문자열을 분할합니다. 이 함수는 정규 표현식을 지원하기 때문에 단순한 쉼표뿐 아니라 공백이 포함된 패턴이나 여러 개의 구분자도 처리할 수 있다는 장점이 있습니다.
두 번째 방법은 explode 함수를 사용하는 것입니다. explode는 정규 표현식 없이 지정된 구분자(여기서는 쉼표)가 나타날 때마다 문자열을 잘라내어 배열로 반환합니다. 단순히 하나의 고정 구분자만 필요하다면 explode가 더 빠르고 간결한 선택입니다.
참고: 공백 제거하기
위 예제의 입력 문자열처럼 쉼표 뒤에 공백이 있는 경우, 분할된 배열 요소 앞에 불필요한 공백이 남게 됩니다. 이럴 때는 array_map과 trim을 조합하면 깔끔하게 처리할 수 있습니다.
<?php
$my_string = "456,789,23, 4, 019";
$my_str_arr = array_map('trim', explode(",", $my_string));
print_r($my_str_arr);
?>이렇게 하면 모든 배열 요소에서 앞뒤 공백이 제거되어 ["456", "789", "23", "4", "019"]와 같은 깔끔한 결과를 얻을 수 있습니다.