-
[PHP] 문자열 길이 가져오기 (strlen, mb_strlen 함수)프로그래밍/PHP 2017. 12. 15. 10:20
▶PHP 문자열 길이 가져오기 (strlen, mb_strlen 함수)
▶설명
strlen 함수
PHP 함수인 strlen 함수에 대해 php.net 에서는 아래와 같이 설명하고 있습니다.
문자열 길이를 얻습니다.
그렇지만, 해당 함수는 영문 문자열이 몇 바이트(Byte)인지를 가져오는 함수입니다.영문은 1 Byte로 계산하지만,UTF-8 문서에 경우 각 문자를 1~4Byte까지 사용하므로, 한글은 한 글자당 1~4Byte에 길이가 반환되어 정확한 문자열의 길이를 알 수 없습니다.그렇기 때문에 우리는 이를 해결 할 수 있는 함수인 mb_strlen 에 대해서도 함께 알아보겠습니다.
mb_strlen 함수
문자열 길이를 얻습니다.
그러면 무엇이 틀린 걸까요?그건 바로 사용하는 인수 값이 틀립니다.
strlen은 문자열 하나만을 인수로 사용하지만,mb_strlen은 문자열과 현재 파일의 인코딩(= 문자셋 혹은 charset )을 인수로 사용합니다.mb_strlen 함수를 이용하면 한글 문자열 길이도 문제없이 가져올 수 있습니다.
▶사용법
강조 처리된 부분만 필수 입력 사항입니다.
strlen( 문자열 )
mb_strlen( 문자열 , 인코딩 = mb_internal_encoding() )
* 인코딩 : 값을 입력하지 않으면, 기본 문자 인코딩에서 사용되는 문자 인코딩을 가져옵니다. [참고 ]
▶strlen 함수 예제
코드
<?php echo "영어 : ". strlen("Edward").'<br/>'; echo "한글 : ". strlen("반갑수"); ?>
결과
영어 : 6 한글 : 9
▶mb_strlen 함수 예제
파일 인코딩이 UTF-8인 경우에 대한 예제입니다. (다른 인코딩이면 어딜 변경해야할지 아실거라 생각합니다.)
코드
<?php echo "영어 : ". mb_strlen("Edward", "UTF-8").'<br/>'; echo "한글 : ". mb_strlen("반갑수", "UTF-8"); ?>
결과
영어 : 6 한글 : 3
'프로그래밍 > PHP' 카테고리의 다른 글
[PHP] 랜덤 숫자 생성 (rand 함수) (0) 2017.12.20 [PHP] 문자열 부분 가져오기 (substr, mb_substr) (0) 2017.12.18 [PHP] 날짜 더하기, 빼기 (date/strtotime 함수 활용) (0) 2017.12.14 [PHP] 시간 텍스트를 timestamp로 가져오기 (strtotime 함수) (0) 2017.12.14 [PHP] 현재 서버 timestamp 가져오기 (time 함수) (0) 2017.12.14