728x90
반응형

strlen 함수

PHP 함수인 strlen 함수에 대해 php.net 에서는 아래와 같이 설명하고 있습니다.

문자열 길이를 얻습니다. 

그렇지만, 해당 함수는 영문 문자열이 몇 바이트(Byte)인지를 가져오는 함수입니다.
영문은 1 Byte로 계산하지만,
UTF-8 문서에 경우 각 문자를 1~4Byte까지 사용하므로, 한글은 한 글자당 1~4Byte에 길이가 반환되어 정확한 문자열의 길이를 알 수 없습니다.
그렇기 때문에 우리는 이를 해결 할 수 있는 함수인 mb_strlen 에 대해서도 함께 알아보겠습니다.

mb_strlen 함수

PHP 함수인 mb_strlen 은 php.net 에서 strlen과 동일한 설명을 가지고 있습니다.

문자열 길이를 얻습니다. 

그러면 무엇이 틀린 걸까요?
그건 바로 사용하는 인수 값이 틀립니다.

strlen은 문자열 하나만을 인수로 사용하지만,
mb_strlen은 문자열과 현재 파일의 인코딩(= 문자셋 혹은 charset )을 인수로 사용합니다.
mb_strlen 함수를 이용하면 한글 문자열 길이도 문제없이 가져올 수 있습니다.

▶사용법


강조 처리된 부분만 필수 입력 사항입니다.

strlen( 문자열 )


mb_strlen( 문자열 ,   인코딩 =  mb_internal_encoding() )


* 인코딩 : 값을 입력하지 않으면, 기본 문자 인코딩에서 사용되는 문자 인코딩을 가져옵니다. [참고 ]


▶strlen 함수 예제



코드

1
2
3
4
<?php
echo "영어 : ". strlen("Edward").'<br/>';
echo "한글 : ". strlen("반갑수");
?>


결과

영어 : 6
한글 : 9


▶mb_strlen 함수 예제


파일 인코딩이 UTF-8인 경우에 대한 예제입니다. (다른 인코딩이면 어딜 변경해야할지 아실거라 생각합니다.)

코드

1
2
3
4
<?php
echo "영어 : ". mb_strlen("Edward", "UTF-8").'<br/>';
echo "한글 : ". mb_strlen("반갑수", "UTF-8");
?>


결과

영어 : 6
한글 : 3



출처: http://extbrain.tistory.com/entry/PHP-문자열-길이-가져오기-strlen-mbstrlen-함수 [확장형 뇌 저장소]

728x90
반응형

'Web Programming > php' 카테고리의 다른 글

php $_GET $_POST  (0) 2018.09.05
php new line to br nl2br()  (0) 2018.09.05
php data types  (0) 2018.09.04
php include, require  (0) 2018.09.03
php 배열  (0) 2018.09.03

+ Recent posts