explode()
함수의 정의 및 사용법
explode()
함수는
문자열을 특정 구분자를 기준으로 나누어 배열로 변환하는 함수입니다.
explode()
함수는 특히 문자열 파싱 등의 작업에서 유용하게 사용됩니다.
이 함수의 관련 함수를 참조하세요.
explode()
함수의 형식은 다음과 같습니다.
구문
매개변수
$delimiter |
입력 문자열을 나눌 구분자입니다. |
---|---|
$string |
나눌 대상의 원본 문자열입니다. |
$limit |
나눌 최대 수, 이 인자를 생략하면 기본적으로 배열의 크기가 제한 없이 구분자에 따라 문자열이 나누어집니다. |
반환 값
explode()
함수는 문자열을 구분자로 나누어 배열로 만들고, 그 결과로 나온 배열을 반환합니다.
매개변수와 반환 값 관계
매개변수와 반환 값 관계에 대해 살펴보겠습니다.
빈 문자열(''
)을 구분자로 지정했을 경우
- PHP 8.0.0 버전 이전에는 구분자 파라미터로 빈 문자열(
''
)을 제공했을 때explode()
함수가false
를 반환했었습니다. - PHP 8.0.0 버전부터는 이러한 경우에
ValueError
를 발생시키도록 변경되었습니다.
빈 문자열(''
)구분자로 지정했을 경우 PHP 설정에 따라서는 Waring 에러가 발생할 수 있습니다.
구분자가 원본 문자열의 처음이나 끝에 있는 경우
$delimiter
로 지정한 구분자가 원본 문자열의 처음이나 끝에 있는 경우에 반환되는 배열도 빈 문자열로 시작하거나 끝납니다.
구분자와 원본 문자열이 동일할 경우
구분자와 원본 문자열이 동일할 경우 빈 문자열(''
) 두 개를 요소로 가지는 배열이 반환됩니다.
사용 예제
explode()
함수의 사용 예제를 살펴보겠습니다.
문자열 나누기
explode()
함수를 사용하여 아래와 같은 문자열을 쉼표와 공백을 기준으로 나누어 배열로 만들어 보겠습니다.
위 코드에서 explode()
함수는 '|'
구분자를 사용하여 $input_string
을 나누어 배열로 만듭니다.
URL 분석
예시로는 URL에서 경로와 쿼리 파라미터를 추출하는 경우를 생각해볼 수 있습니다.
위 코드에서는 explode()
함수를 사용하여 URL을 ?
기준으로 나누어 경로와 쿼리 문자열을 분리합니다.
알아두세요!
위 예제 코드는 URL 쿼리 문자열이 인코딩되어 있다고 가정하지 않았습니다. 대부분의 코드는 안전한 URL을 사용하기 위해 URL의 쿼리를 인코딩하여 사용하고, 이 URL 문자열을 분리할 경우에는 디코딩하여 사용합니다.
URL의 인코딩과 디코딩에 관련된 함수들의 사용법은 다음을 참조하시기 바랍니다.
알아두세요!
PHP에서는 URL의 구성 요소 분석하는 내장 함수가 있습니다.
parse_url()
함수는 주어진 URL 문자열을 구문 분석하여 구성 요소를 반환합니다.
문자열 파싱
예시로 시간 형식에서 시간 단위를 추출하는 경우를 생각해볼 수 있습니다.
예를 들어, 시간을 나타내는 문자열이 "02:30:45"와 같은 형식이라고 가정해봅시다. 이 문자열은 시:분:초로 구성되어 있습니다. 여기서 우리는 시간 단위를 추출하고 싶습니다.
위 코드에서 explode()
함수는 문자열을 콜론(:
)을 기준으로 나누어 배열로 만듭니다. 이렇게 분리된 배열의 첫 번째 요소는 시간 단위를 나타내게 됩니다. 따라서 출력 결과는 "Hours: 02"가 됩니다. 이 예시를 확장하여 시간, 분, 초를 각각 추출하거나 시간 형식을 분석하는 더 복잡한 작업을 수행할 수 있습니다.
주의할 점
- 구분자가 있는지 확인:
explode()
함수를 사용하기 전에 문자열에 구분자가 있는지 먼저 확인하는 것이 좋습니다. 구분자가 없는 경우에도explode()
는 원래 문자열을 하나의 요소로 간주하므로 조심해야 합니다. - 빈 공간 처리: 문자열의 시작이나 끝에 공백이 있는 경우에도 주의해야 합니다. 구분자와 함께 공백이 있는 경우 배열의 첫 번째 또는 마지막 요소에 공백이 포함될 수 있습니다.
- 구분자가 연속적으로 나타날 경우 처리: 만약 구분자가 연속적으로 나타나는 경우 빈 문자열이 배열에 추가될 수 있습니다. 이런 경우 결과적으로 빈 값을 다루게 될 수 있으므로 주의해야 합니다.
- 대소문자 구분:
explode()
함수는 대소문자를 구분합니다. 구분자를 기준으로 나눌 때 대소문자가 일치해야 올바르게 분리됩니다. - 구분자의 길이:
explode()
함수는 정확한 구분자를 사용해야 합니다. 예를 들어, 만약 공백 문자열을 구분자로 사용하고 싶다면explode(' ', $string)
과 같이 명시적으로 구분자를 지정해야 합니다. - 메모리 사용: 큰 문자열을 처리할 때
explode()
함수는 메모리 사용에 영향을 미칠 수 있습니다. 큰 문자열을 처리해야 하는 경우 메모리 사용을 최적화하기 위해 다른 방법을 고려해보는 것이 좋습니다.