mb_substr()
함수의 정의 및 사용법
mb_substr()
함수는
문자열에서 특정 위치부터 특정 길이만큼의 문자열을 추출하는 substr()
함수의 한글의 인코딩 문제를 해결해 주는 함수입니다.
mb_substr()
함수는 substr()
함수와 거의 동일한 기능을 하지만, 한글과 같은 multi-byte 문자열에서 안전하게 작동하는 기능을 제공한다는 큰 차이점이 있습니다.
substr()
함수의 인코딩 문제점
mb_substr()
함수로 인코딩 문제 해결
PHP의 substr()
함수를 사용할 때 한글 문자열의 인코딩 문제가 발생할 수 있습니다. 이는 UTF-8과 같은 멀티바이트 문자 인코딩을 사용하는 경우에 주로 발생하는 문제입니다.
영어, 숫자 등은 1byte이지만, 한글이나 중국어등은 2byte입니다. 2byte이상의 바이트로 표현되는 것을 "multi-byte(멀티바이트)"라고 합니다.
UTF-8과 같은 멀티바이트 문자 인코딩에서는 문자 하나가 여러 바이트로 표현되기 때문에, 일반적인 바이트 수를 그대로 사용하여 문자열을 자르는 것은 예상치 못한 결과를 초래할 수 있습니다. substr()
함수는 바이트 단위로 문자열을 자르기 때문에, 멀티바이트 문자의 중간에서 자를 경우 문자가 깨져 나올 수 있습니다.
이러한 문제를 해결하기 위해서는 mb_substr()
함수를 사용하여 멀티바이트 문자열을 제대로 자를 수 있습니다. mb_substr()
함수는 멀티바이트 문자열을 지원하며, 정확한 문자 단위로 문자열을 자를 수 있습니다.
알아두세요!
mb_substr()
함수는 substr()
함수를 대신해서 안전하게 multi-byte로 작동하게 하는 함수입니다.
mb_substr()
함수의 형식은 다음과 같습니다.
구문
매개변수
$string |
필수. 추출하고자 하는 원본 문자열입니다. |
---|---|
$start |
필수. 추출을 시작할 위치입니다.
0 부터 시작하여 문자열의 첫 번째 문자는 0번 인덱스입니다. 음수 값을 사용하는 경우, 문자열의 끝에서부터 역으로 카운트하게 됩니다. 예를 들어, -1 은 문자열의 마지막 문자를 나타내며, -2 는 끝에서 두 번째 문자를 나타냅니다. |
$length |
옵션. 추출할 문자열의 최대 길이입니다.
기본값은 null 이며, 이 경우 시작 위치부터 문자열의 끝까지 모든 문자를 추출합니다. |
$encoding |
옵션. 문자열의 인코딩을 지정합니다.
기본값은 null 이며, UTF-8과 같은 표준 인코딩을 사용할 경우에는 별도로 지정하지 않아도 됩니다. 생략하거나 null 이면 내부 문자 인코딩 값이 사용됩니다. |
반환 값
mb_substr()
함수는 성공적으로 부분 문자열을 추출한 경우 해당 문자열을 반환합니다.
주의하세요!
substr()
함수는 실패할 경우 false
를 반환하지만, mb_substr()
함수는 실패할 경우 반환하는 값이 없습니다. null
입니다.
사용법
mb_substr()
함수의 사용법을 알아보겠습니다.
기본 사용법
위의 코드에서 mb_substr()
함수를 사용하여 멀티바이트 문자열을 올바르게 추출하고 있습니다. 이를 통해 한글 문자열의 깨짐을 예방할 수 있습니다.
$start
파라미터에 음수 값을 사용하는 예제: 문자열을 뒤에서부터 찾는 방법
mb_substr()
함수의 $start
파라미터에 음수 값을 사용하는 경우, 문자열의 끝에서부터 역으로 카운트하게 됩니다. 예를 들어, -1은 문자열의 마지막 문자를 나타내며, -2는 끝에서 두 번째 문자를 나타냅니다.
다음은 $start
파라미터에 음수 값을 사용하는 예제입니다.
이 코드에서 $startNegative
변수에 -10
을 할당했습니다. 이는 문자열 "안녕하세요, 반갑습니다!"의 끝에서부터 10번째 문자부터 시작하여 길이가 5인 문자열 "세요, 반"을 추출하게 됩니다.