ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 3762


Ignore:
Timestamp:
Aug 23, 2007, 4:12:30 PM (12 years ago)
Author:
maruyama
Message:

絵文字変換修正
t_truncateで絵文字コードが途中で切られてしまう問題を対策

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/work/maruyama/prj_emoji/lib/smarty_plugins/modifier.t_truncate.php

    r2 r3762  
    2828        if (!$break_words)
    2929            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
     30       
     31        $offset = 0;
     32        while (preg_match('/%%[a-z][0-9]+%%/i', $string, $matches, PREG_OFFSET_CAPTURE, $offset)) {
     33            if ($matches[0][1] > $length) {
     34                //絵文字が切る位置より後ろなら終了
     35                break;
     36            }
     37            $emoji_len = mb_strlen($matches[0][0]);
     38            //次の検索の開始位置(絵文字の位置+長さ)
     39            $offset = $matches[0][1] + $emoji_len;
     40            //絵文字は全角1文字と扱い、切る位置を延長
     41            $length += $emoji_len - 2;
     42            if ($offset > $length) {
     43                //次の検索の開始位置が長さをオーバーしたらその絵文字の前までとする
     44                $length = $matches[0][1];
     45                break;
     46            }
     47        }
    3048
    3149        $string = mb_strimwidth($string, 0, $length) . $etc;
Note: See TracChangeset for help on using the changeset viewer.