[PHP] 문장이나 글자 자르기(substr, mb_substr)

#PHP 를 이용해 워드프레스 테마와 플러그인을 만들면서 아주 기초적인 PHP 문법에 대해 공부하고 있습니다.

오늘은 PHP 함수를 이용해 문자이나 글자를 자르는 방법에 대해 정리해봅니다. 정리할 함수는 #substr#mb_substr 함수입니다. 그 차이에 대해서도 같이 정리 할께요.

(사실 글자나 문장이나 어차피 string 인건 마찬가지니까 아래에서는 그냥 문장이라고만 표현하겠습니다.)

substr: 문장 자르기

PHP 함수 중 #substr 함수는 #string 형식으로 된 문장을 원하는 길이로 잘라주는 함수 입니다. 기본 사용법은 아래와 같습니다.

substr( $string, $start, [ $length ] );

투입 변수로 첫번째는 자를 대상이 되는 문자열, 두번째는 자르기 시작할 위치, 세번째는 잘라낼 길이를 넣을 수 있습니다.

실제 사용 예제는 아래와 같습니다.

substr( 'alphabeta', 0, 4 );

예상 하셨듯이 위 코드의 결과물은 ‘alph’ 입니다.

$start

잘라낼 문장($string)의 가장 첫번째 글자가 순서에서 0을 차지합니다. 1부터 시작하는게 아니니 주의하세요.

$length

잘라낼 글자의 길이를 결정하는 투입변수입니다. 잘라내기 시작하는 위치를 $start 로 설정했다면, 그 $start 의 위치가 $length 에서 1을 차지합니다. $start 하고 개념적으로 혼동 할 수 있으니 주의하세요.

mb_substr: 한글 문자 자르기

substr 은 영문에서는 잘 작동 하지만, 한글이나 다른 언어로된 문장을 substr 로 잘라내려하면 글자까 깨져 보일 때가 있거든요. 이게 영어와 한글의 인코딩 byte 단위가 달라서 그렇다는데.. 문돌이라서 딥하게는 모르겠구요.

아무튼 그럴때 사용하는 것이 #mb_substr 입니다. 문자의 인코딩 형식까지 지정 할 수 있는 함수로 기본 사용법은 substr 과 비슷합니다.

mb_substr( $string, $start, [ $length ], [$encoding] )

마지막 투입변수인 $encoding 에는 ‘utf-8’ 이나 ‘EUR-KR’ 같은 실제 인코딩 방식을 넣어주면 됩니다만, 굳이 모르겠다면 안넣어도 됩니다.

주의사항

$start 와 $length 값으로 음수를 넣을 수 있습니다. $start 에 음수를 넣으면 문장의 가장 마지막 글자가 -1 이며 그 앞으로 갈 수록 -2, -3, -4, … 이런식으로 시작 위치를 지정 할 수 있습니다.

$length 에 음수를 넣으면 $start 만 지정했을 때 출력 되는 결과에서 마지막 글자부터 하나씩 제거해나가게 됩니다.


조금 복잡해 보이지만, 몇 번 해보다 보면 금방 익숙해지니 여러번 테스트 해봅시다.