Changeset 3762
- Timestamp:
- Aug 23, 2007, 4:12:30 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OpenPNE/branches/work/maruyama/prj_emoji/lib/smarty_plugins/modifier.t_truncate.php
r2 r3762 28 28 if (!$break_words) 29 29 $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 } 30 48 31 49 $string = mb_strimwidth($string, 0, $length) . $etc;
Note: See TracChangeset
for help on using the changeset viewer.