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

Changeset 4133


Ignore:
Timestamp:
Sep 20, 2007, 6:42:08 PM (12 years ago)
Author:
ebihara
Message:

#1301:文字のtruncate処理を絵文字対応にした
r3762,r3763をマージし、alpha2形式の絵文字向けに書き換えた)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/lib/smarty_plugins/modifier.t_truncate.php

    r3966 r4133  
    3232            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
    3333
     34        // 絵文字コードが含まれている場合
     35        $offset = 0;
     36        while (preg_match('/\[[a-z]:[0-9]+\]/i', $string, $matches, PREG_OFFSET_CAPTURE, $offset)) {
     37            if ($matches[0][1] > $length) {
     38                // 絵文字が切る位置より後ろなら終了
     39                break;
     40            }
     41            $emoji_len = strlen($matches[0][0]);
     42
     43            // 次の検索の開始位置(絵文字の位置+長さ)
     44            $offset = $matches[0][1] + $emoji_len;
     45
     46            // 絵文字は全角1文字と扱い、切る位置を延長
     47            $length += $emoji_len - 2;
     48            if ($offset > $length) {
     49                // 次の検索の開始位置が長さをオーバーしたらその絵文字の前までとする
     50                $length = $matches[0][1];
     51                break;
     52            }
     53        }
     54
    3455        $string = mb_strimwidth($string, 0, $length) . $etc;
    3556    }
Note: See TracChangeset for help on using the changeset viewer.