위의 그림은 워드프레스 게시판 플러그인인 KBoard에서 사용자가 글을 올렸을 때 승인 대기 중을 나타내는 화면합니다. 승인 전인 글의 작성자의 이름을 "홍*동"과 같이 부분적으로 표시(일부 글자를 별표로 처리)하고자 하는 경우 다음과 같은 형식의 코드를 사용합니다.
mb_internal_encoding(mb_detect_encoding($content->member_display,'UTF-8,EUC-KR')); echo ($len=mb_strlen($content->member_display))>2 ? mb_substr($content->member_display,0,1).str_repeat('*',$len-2).mb_substr($content->member_display,-1,1) : $content->member_display;
"홍**"처럼 이름의 첫 글자(성)만 표시되고 나머지는 별표(*)로 표시하려면 다음과 같이 뒷 부분을 바꾸면 됩니다.
echo ($len=mb_strlen($content->member_display))>1 ? mb_substr($content->member_display,0,1).str_repeat('*',$len-1) : $content->member_display;
위의 코드는 http://phpschool.com/에 나와 있는 코드를 이용한 것입니다.
$view['name'] = '홍길동'; mb_internal_encoding(mb_detect_encoding($view['name'],'UTF-8,EUC-KR')); echo ($len=mb_strlen($view['name']))>2 ? mb_substr($view['name'],0,1).str_repeat('*',$len-2).mb_substr($view['name'],-1,1) : $view['name']; // 홍*동 $view['name'] = '비혼'; mb_internal_encoding(mb_detect_encoding($view['name'],'UTF-8,EUC-KR')); echo ($len=mb_strlen($view['name']))>2 ? mb_substr($view['name'],0,1).str_repeat('*',$len-2).mb_substr($view['name'],-1,1) : $view['name']; // 비혼 $view['name'] = '데이터베이스'; mb_internal_encoding(mb_detect_encoding($view['name'],'UTF-8,EUC-KR')); echo ($len=mb_strlen($view['name']))>2 ? mb_substr($view['name'],0,1).str_repeat('*',$len-2).mb_substr($view['name'],-1,1) : $view['name']; // 데****스
참고로 요약문(Excerpt) 등에서 글의 특정 부분만을 나타낼 때 substr 함수를 사용할 경우 한글이 깨지는 경우가 있습니다. 이런 경우 mb_strimwidth를 사용하면 글자가 깨지지 않고 제대로 표시됩니다.
$text = '가나다라마바사'; $strim = mb_strimwidth($text, '0', '5', '...', 'utf-8'); echo $strim; //가나다라마...
정말 좋은 자료 너무나도 감사합니다...^^