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

source: OpenPNE/branches/stable-2.8.x/lib/smarty_plugins/modifier.t_truncate.php @ 3967

Last change on this file since 3967 was 3967, checked in by ogawa, 12 years ago

#1181:全角スペースの連続によりIEでレイアウトが崩れてしまうバグへの対策

File size: 1.1 KB
Line 
1<?php
2/**
3 * @license  GNU Lesser General Public License (LGPL)
4 * @see      Smarty/plugins/modifier.truncate.php
5 */
6
7/**
8 * Smarty t_truncate modifier plugin
9 *
10 * @param string $string
11 * @param int    $length
12 * @param string $etc
13 * @param bool   $break_words
14 * @return string
15 */
16function smarty_modifier_t_truncate($string, $length = 80, $etc = '...',
17                                  $break_words = true)
18{
19    if ($length == 0)
20        return '';
21
22    $from = array('&amp;', '&lt;', '&gt;', '&quot;', '&#039;');
23    $to   = array('&', '<', '>', '"', "'");
24    $string = str_replace($from, $to, $string);
25
26    // 全角スペースの連続によりIEでレイアウトが崩れてしまうバグへの対策
27    $string = str_replace(' ', ' ', $string);
28
29    if (strlen($string) > $length) {
30        $length -= strlen($etc);
31        if (!$break_words)
32            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
33
34        $string = mb_strimwidth($string, 0, $length) . $etc;
35    }
36    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
37}
38
39?>
Note: See TracBrowser for help on using the repository browser.