보통 개발일을 하면서 문자열을 잘라야 할 경우 퍼블단에서 div로 overflow:hidden 을 사용하는게 대부분이다.
(필자는 그렇다.)
하지만 PHP에서 문자열을 잘라야 할때는 substr 함수를 사용하는데
캐릭터셋이 UTF-8이고 아이디나 닉네임 뒤에 몇자리를 가려야 할 상황에 substr을 사용하다보면
한글깨짐 현상이 있을수 있다.
예를 들어
$nickname = "이지코드이지코드";
echo substr($nickname, 0, 5);
// 이��
이렇게 출력된다.
이는 euc-kr에서는 한글을 2바이트로 처리 / utf-8에서는 3바이트로 처리한다고 한다.
하여 문자깨짐을 방지하려면 substr 말고 다른 함수를 써야 한다.
대체 함수로 mb_substr이 있는데 이 함수는 mb_string이 설치되어 있어야 사용가능하여
필자는 iconv가 사용가능해서
아래의 iconv_substr을 사용하여 처리했다.
iconv_substr($nickname, 0, 5, "utf-8");
이렇게 처리하면 한글 자르기 할때도 문자가 깨지거나 하는 일은 없다.
사용방법은
iconv_substr("자르려고 하는 문자열", 시작위치, 자를 위치, "언어셋");
'WEB > PHP' 카테고리의 다른 글
PHP REMOTE_ADDR로 사용자의 ip가 ipv4인지 ipv6인지 확인하는 방법 (0) | 2022.06.29 |
---|---|
RSS 크롤링시 닫힘태그가 아닌 태그의 요소 파싱하기 (0) | 2021.08.31 |
[PHP] fopen을 사용한 txt파일로 로그남기기 (0) | 2014.02.11 |
[PHP] strtotime을 이용한 남은 일수 구하기 (0) | 2013.06.14 |
[PHP] 외부 사이트의 xml긁어오기 (2) | 2013.01.08 |