본문 바로가기
IT tech Coding/php

php substr 함수 사용시 한글깨짐 현상 해결법 연구

by Coding Life 2019. 10. 7.

php substr 함수 사용시 한글깨짐 현상 해결법 연구

 

속상하다. 속상해... 이렇게 한글이 깨지는 현상, 한글이란 멋진 글을 우리민족은 사용하는데, 왜 나의 php프로그램에서 한글이 마구마구 깨자는 걸까? 곧 한글날인데, 정말 속상하다.

사실, substr도 사용하지 않고 해결하는 방법은 뭘까?

 

혹시? div로 overflow:hidden 을 사용하면 될까? 매우 궁금하다. 결과는 오케이~ 이건 css에서 하는 것이기에, 막상

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($nickname, 0, 5, "utf-8");

이렇게 처리하면 한글 자르기 할때도 문자가 깨지지 않는다. 꿀팁이니 기억하고 또 기억하자...

iconv_substr("자르려고 하는 문자열", 시작위치, 자를 위치, "언어셋");


요렇게 사용하면 되지 않을까 싶다~~

 

앞으로 한글깨짐 현상을 해결하는데 도움이 되었으면 한다.

 

반응형