上の図は、 WordPress 掲示板プラグイン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; //가나다라마...
本当に良い資料にとても感謝しています... ^^