Yii系列总结:截取字符串方法
1.先建立一个文件 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;
???}
}
????>
--------------------------------------
2.将Helper.php放进protected\components文件夹下。
这个函数truncate_utf8_string($string, $length, $etc = '...')的3个参数很容易看出来。
?
-----------------------------------------------
使用方法:
???Helper::truncate_utf8_string($content,20,false); ??//不显示省略号
???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',
???????),
???),
)); ?>