Yii截取字符串(UTF-8)方法

 
http://www.yiichina.org/forum.php?mod=viewthread&tid=645&pid=7594&page=1&extra=page%3D1#pid7594
舰长给我们写好了一个文件:

Helper.php
<?php
class Helper extends CController
{
    public static function truncate_utf8_string($string, $length, $etc = '...')
    {
        $result = '';
        $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'UTF-8');
        $strlen = strlen($string);
        for ($i = 0; (($i < $strlen) && ($length > 0)); $i++)
        {
        if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
            {
            if ($length < 1.0)
                {
            break;
            }
            $result .= substr($string, $i, $number);
            $length -= 1.0;
            $i += $number - 1;
        }
            else
            {
            $result .= substr($string, $i, 1);
            $length -= 0.5;
        }
        }
        $result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');
        if ($i < $strlen)
        {
        $result .= $etc;
        }
        return $result;
    }
}
    ?>
将Helper.php放进protected\components文件夹下。
这个函数truncate_utf8_string($string, $length, $etc = '...')的3个参数很容易看出来。
使用方法:

  1. Helper::truncate_utf8_string($content,20,false);   //不显示省略号
  2. Helper::truncate_utf8_string($content,20);  //显示省略号

即:'content'=>array(
            'value'=>'Helper::truncate_utf8_string($data->content,40,false)',
        ),
举个例子。

<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'news-grid',
    'dataProvider'=>$dataProvider,
    //'filter'=>$model,
    'columns'=>array(
        'id',
        'title',
        'content'=>array(
            'value'=>'Helper::truncate_utf8_string($data->content,40,false)',),
        'author',
        'create_time',
        'status',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

 

'value'=>'mb_substr(htmlspecialchars_decode($data->content),0,40,"utf-8")',

你可能感兴趣的:(yii)