[PHP] 문자열 부분 가져오기 (substr, mb_substr)
▶PHP 문자열 부분 가져오기 (substr, mb_substr)
▶설명
substr 함수
문자열의 일부를 반환합니다.
mb_substr 함수
문자열의 일부를 반환합니다.
그러면 무엇이 틀린 걸까요?
그건 바로 사용하는 인수 값이 틀립니다.
substr은 문자열, 시작 지점, 길이만을 인수로 사용하지만,
mb_substr은 문자열, 시작 지점, 길이, 현재 파일의 인코딩(=문자셋 혹은 charset)을 인수로 사용합니다.
mb_substr 함수를 이용하면 한글 문자열의 일부도 문제없이 가져올 수 있습니다.
▶사용법
강조 처리된 부분만 필수 입력 사항입니다.
substr( 문자열 , 시작 지점, 길이 )
mb_substr( 문자열 , 시작 숫자, 길이 , 인코딩 = mb_internal_encoding() )
* 시작 숫자 :
- 음수가 아닌 경우 : 문자열의 처음을 0부터 세서, 시작 숫자 자리에서 시작한 문자열의 일부를 가져옵니다. (예를 들어, 문자열 'abcdef'에서 위치 0의 문자는 'a'이고, 위치 2의 문자는 'c'입니다.
- 음수인 경우 : 문자열의 끝을 기준으로 문자열의 일부를 가져옵니다.
- 문자열 길이보다 시작 숫자가 작은 경우, FALSE를 반환합니다.
* 길이 :
- 생략된 경우 : 시작 숫자부터 문자열의 끝까지를 가져옵니다.
- 양수인 경우 : 시작 숫자부터 길이만큼에 문자열의 일부를 가져옵니다.
- 음수인 경우 : 문자열의 끝부터 음수만큼의 문자를 제외한 문자열을 가져옵니다.
- 0인 경우 : FALSE 또는 NULL, 빈 무자열이 반환됩니다.
* 인코딩 : 값을 입력하지 않으면, 기본 문자 인코딩에서 사용되는 문자 인코딩을 가져옵니다. [참고 ]
▶substr 함수 예제
코드
<?php $example_english = "Hello world!"; echo "영어 : ".$example_english."<br/>"; echo "시작이 양수인 경우 #1 : ".substr($example_english, 1).'<br/>'; echo "시작이 양수인 경우 #2 : ".substr($example_english, 2).'<br/>'; echo "시작이 양수인 경우 #3 : ".substr($example_english, 3).'<br/>'; echo "시작이 양수인 경우 #4 : ".substr($example_english, 3, 3).'<br/>'; echo "시작이 양수인 경우 #5 : ".substr($example_english, 3, -1).'<br/>'; echo "시작이 양수인 경우 #6 : ".substr($example_english, -3, -1).'<br/>'; echo "<br/>"; echo "시작이 음수인 경우 #1 : ".substr($example_english, -1).'<br/>'; echo "시작이 음수인 경우 #2 : ".substr($example_english, -2).'<br/>'; echo "시작이 음수인 경우 #3 : ".substr($example_english, -3, 1).'<br/>'; echo "시작이 음수인 경우 #4 : ".substr($example_english, -3, -1).'<br/>'; echo "<br/>"; $example_korean = "안녕하세요. 세상!"; echo "한글 : ".$example_korean."<br/>"; echo "시작이 양수인 경우 #1 : ".substr($example_korean, 1).'<br/>'; echo "시작이 양수인 경우 #2 : ".substr($example_korean, 2).'<br/>'; echo "시작이 양수인 경우 #3 : ".substr($example_korean, 3).'<br/>'; echo "시작이 양수인 경우 #4 : ".substr($example_korean, 3, 3).'<br/>'; echo "시작이 양수인 경우 #5 : ".substr($example_korean, 3, -1).'<br/>'; echo "시작이 양수인 경우 #6 : ".substr($example_korean, -3, -1).'<br/>'; echo "<br/>"; echo "시작이 음수인 경우 #1 : ".substr($example_korean, -1).'<br/>'; echo "시작이 음수인 경우 #2 : ".substr($example_korean, -2).'<br/>'; echo "시작이 음수인 경우 #3 : ".substr($example_korean, -3, 1).'<br/>'; echo "시작이 음수인 경우 #4 : ".substr($example_korean, -3, -1).'<br/>'; ?>
결과
영어 : Hello world! 시작이 양수인 경우 #1 : ello world! 시작이 양수인 경우 #2 : llo world! 시작이 양수인 경우 #3 : lo world! 시작이 양수인 경우 #4 : lo 시작이 양수인 경우 #5 : lo world 시작이 양수인 경우 #6 : ld 시작이 음수인 경우 #1 : ! 시작이 음수인 경우 #2 : d! 시작이 음수인 경우 #3 : l 시작이 음수인 경우 #4 : ld 한글 : 안녕하세요. 세상! 시작이 양수인 경우 #1 : ��녕하세요. 세상! 시작이 양수인 경우 #2 : �녕하세요. 세상! 시작이 양수인 경우 #3 : 녕하세요. 세상! 시작이 양수인 경우 #4 : 녕 시작이 양수인 경우 #5 : 녕하세요. 세상 시작이 양수인 경우 #6 : �� 시작이 음수인 경우 #1 : ! 시작이 음수인 경우 #2 : �! 시작이 음수인 경우 #3 : � 시작이 음수인 경우 #4 : ��
▶mb_substr 함수 예제
코드
<?php
define('SERVER_CHARSET', 'UTF-8');
$example_english = "Hello world!";
echo "영어 : ".$example_english."<br/>";
echo "시작이 양수인 경우 #1 : ".mb_substr($example_english, 1, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #2 : ".mb_substr($example_english, 2, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #3 : ".mb_substr($example_english, 3, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #4 : ".mb_substr($example_english, 3, 3, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #5 : ".mb_substr($example_english, 3, -1, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #6 : ".mb_substr($example_english, -3, -1, SERVER_CHARSET).'<br/>';
echo "<br/>";
echo "시작이 음수인 경우 #1 : ".mb_substr($example_english, -1, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #2 : ".mb_substr($example_english, -2, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #3 : ".mb_substr($example_english, -3, 1, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #4 : ".mb_substr($example_english, -3, -1, SERVER_CHARSET).'<br/>';
echo "<br/>";
$example_korean = "안녕하세요. 세상!";
echo "한글 : ".$example_korean."<br/>";
echo "시작이 양수인 경우 #1 : ".mb_substr($example_korean, 1, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #2 : ".mb_substr($example_korean, 2, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #3 : ".mb_substr($example_korean, 3, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #4 : ".mb_substr($example_korean, 3, 3, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #5 : ".mb_substr($example_korean, 3, -1, SERVER_CHARSET).'<br/>';
echo "시작이 양수인 경우 #6 : ".mb_substr($example_korean, -3, -1, SERVER_CHARSET).'<br/>';
echo "<br/>";
echo "시작이 음수인 경우 #1 : ".mb_substr($example_korean, -1, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #2 : ".mb_substr($example_korean, -2, NULL, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #3 : ".mb_substr($example_korean, -3, 1, SERVER_CHARSET).'<br/>';
echo "시작이 음수인 경우 #4 : ".mb_substr($example_korean, -3, -1, SERVER_CHARSET).'<br/>';
?>
결과
영어 : Hello world! 시작이 양수인 경우 #1 : ello world! 시작이 양수인 경우 #2 : llo world! 시작이 양수인 경우 #3 : lo world! 시작이 양수인 경우 #4 : lo 시작이 양수인 경우 #5 : lo world 시작이 양수인 경우 #6 : ld 시작이 음수인 경우 #1 : ! 시작이 음수인 경우 #2 : d! 시작이 음수인 경우 #3 : l 시작이 음수인 경우 #4 : ld 한글 : 안녕하세요. 세상! 시작이 양수인 경우 #1 : 녕하세요. 세상! 시작이 양수인 경우 #2 : 하세요. 세상! 시작이 양수인 경우 #3 : 세요. 세상! 시작이 양수인 경우 #4 : 세요. 시작이 양수인 경우 #5 : 세요. 세상 시작이 양수인 경우 #6 : 세상 시작이 음수인 경우 #1 : ! 시작이 음수인 경우 #2 : 상! 시작이 음수인 경우 #3 : 세 시작이 음수인 경우 #4 : 세상