티스토리 뷰

반응형

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("자르려고 하는 문자열", 시작위치, 자를 위치, "언어셋");


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

 

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

 

반응형
댓글