본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP explode — 문자열을 구분자로 잘라 배열로 변환 완전 정리

by 왕진 2026. 6. 14.
반응형

 

 

Web Development · PHP explode

PHP explode —
구분자로 문자열 자르기 → 배열

"사과,귤,감,밤" 같은 CSV형 문자열을 ['사과', '귤', '감', '밤']로 분해
시작 오늘 분석할 코드

한 문자열에 콤마로 묶여 있는 여러 값을 각각 분리해서 배열의 원소로 만드는 코드. print_r로 결과 배열의 내부 구조까지 확인한다.

<?php $string = "사과,귤,감,밤"; $array = explode(',', $string); // "," 구분자로 일반 문자열을 배열로 변환 print "<PRE>"; print_r($array); print "</PRE>"; ?>
실제 출력 결과
Array ( [0] => 사과 [1] => 귤 [2] => 감 [3] => 밤 )
용어 용어 정리
explode()구분자를 기준으로 문자열을 잘라 배열로 만드는 함수
구분자 (delimiter)자를 위치를 알려주는 기준 문자(열)
CSV콤마로 값들을 구분한 텍스트 형식
print_r()배열·객체 구조를 사람이 읽기 쉽게 출력
<PRE>공백·줄바꿈을 그대로 보존하는 HTML 태그
implode()반대 함수 — 배열을 문자열로 합침
숫자 인덱스 배열0부터 시작하는 키를 가진 일반 배열
var_dump()print_r보다 더 자세한 디버그 출력

1 explode가 필요한 상황

한 문자열 안에 여러 값이 묶여 들어오는 형태는 웹·DB·파일 어디서나 흔하다.

예시 시나리오
· CSV 파일의 한 줄: "이름,나이,주소" → 3개 칸으로 분리
· URL 경로: "/products/123/reviews" → 부위별로 분해
· 태그 입력: "php, web, mysql" → 태그 배열
· 날짜: "2026-05-02" → [2026, 05, 02]

2 explode 문법
explode(구분자, 원본_문자열) // ↑ ↑ // string string
매개변수 이 코드 의미
구분자 ',' 이 문자가 나오는 위치마다 자름
원본 문자열 "사과,귤,감,밤" 자를 대상
(선택) 최대 개수 생략 몇 조각까지만 자를지
※ 매개변수 순서 주의: 구분자가 먼저, 문자열이 나중. 다른 언어(예: 자바스크립트의 split)와 반대다.

3 결과 배열의 구조
"사과,귤,감,밤" └─┘ └┘ └┘ └┘ [0] [1][2][3] ← 자른 조각이 0번부터 차례로 들어감 결과: ["사과", "귤", "감", "밤"] index 0 1 2 3

구분자(콤마) 자체는 결과에 포함되지 않는다. 각 조각만 깨끗하게 분리된다.


 

반응형

 

4 print_r() vs print() vs var_dump()

일반 print($array)는 배열을 못 다룬다 — "Array"라는 글자만 출력한다. 배열 내용을 보려면 print_r이나 var_dump를 쓴다.

함수 출력 형태 용도
print($a) "Array" 만 배열 직접 출력 X
print_r($a) 키 => 값 보기 좋게 일반적인 배열 확인
var_dump($a) 타입·길이까지 자세히 디버깅 (string(3), int(20) 등)
print_r($a, true) 출력 대신 문자열 반환 로그 파일에 기록할 때

5 왜 <PRE>로 감싸는가?

HTML은 기본적으로 여러 공백·줄바꿈을 한 칸으로 합쳐 표시한다. print_r의 출력은 공백·줄바꿈으로 정렬돼 있는데, 그냥 출력하면 한 줄로 다 붙어 보인다.

<PRE> 없이
Array ( [0] => 사과 [1] => 귤 [2] => 감 [3] => 밤 )
한 줄에 다 붙음
<PRE> 안에
줄바꿈 보존 → 보기 좋게 정렬
코드처럼 모노스페이스 폰트로

6 단계별 추적
1
$string = "사과,귤,감,밤"11바이트(한글 1자=3B 기준) 짜리 문자열
2
explode(',', $string)콤마 위치(3곳)에서 자름
3
4조각 생성"사과", "귤", "감", "밤"
4
$array = [0=>"사과", 1=>"귤", 2=>"감", 3=>"밤"]0번부터 차례로 인덱스 부여
5
print "<PRE>"HTML 모노스페이스 영역 시작
6
print_r($array)"Array ( [0] => 사과 ... )" 형태로 출력
7
print "</PRE>"영역 종료

7 다양한 사용 예
// CSV 줄 파싱 explode(',', "kim,30,seoul") // → ["kim", "30", "seoul"] // URL 경로 분해 explode('/', "/products/123/reviews") // → ["", "products", "123", "reviews"] ← 첫 빈 칸 주의 // 줄바꿈으로 자르기 explode("\n", $multilineText) // → 줄별로 배열 원소 // 최대 개수 지정 explode(',', "a,b,c,d,e", 3) // → ["a", "b", "c,d,e"] ← 마지막은 합쳐짐 // 음수 (뒤에서 N개 제외) explode(',', "a,b,c,d", -1) // → ["a", "b", "c"] ← 마지막 1개 버림

8 implode와 짝

explode의 반대는 implode(또는 별칭 join). 배열을 다시 한 문자열로 합친다.

$arr = ["사과", "귤", "감", "밤"]; $str = implode(',', $arr); // "사과,귤,감,밤" (다시 원래대로)

9 자주 하는 실수
실수 증상 해결
매개변수 순서 (문자열, 구분자) 의도와 다른 동작 explode(구분자, 문자열)
구분자가 빈 문자 '' 경고 + false 반환 최소 1글자 이상
한 글자씩 자르고 싶음 explode로는 불가 str_split($s) 사용
구분자 여럿 처리 한 종류만 가능 preg_split('/[,;]/', $s)
print($array) 했더니 "Array"만 print는 배열 직접 X print_r 또는 var_dump
<PRE> 없이 print_r 결과가 안 보임 한 줄에 다 붙어 표시됨 HTML 출력 시엔 <pre> 안에

10 한 단계 발전 — 정규식 기반

구분자가 여러 종류이거나 패턴일 때는 preg_split을 쓴다.

// 콤마 또는 세미콜론으로 자르기 preg_split('/[,;]/', "a,b;c,d"); // ["a", "b", "c", "d"] // 여러 공백을 한 칸으로 자르기 preg_split('/\s+/', "hello world foo"); // ["hello", "world", "foo"]

핵심 한 줄 요약

explode()구분자 기준으로 문자열을 배열로 자르는 함수
매개변수 순서explode(구분자, 원본) — 다른 언어와 반대 주의
결과0번부터 차례로 인덱스 부여된 일반 배열
구분자 자체결과에 포함되지 않음
print_r배열 내용을 키=>값 형식으로 보기 좋게 출력
<PRE>HTML에서 줄바꿈·공백 보존
반대implode — 배열을 문자열로 합침
반응형

댓글