在thinkPHP中截取子串的几个解决方法

2021-06-01 11:36
摘要:修改一个百度小程序时遇到个难解决的问题,最后发现可以用多种方法解决,一是使用ThinkPHP的each方法解决,另一种是使用mysql的left函数,还有一种是使用分解再组合的方式解决。

修改一个百度小程序时遇到个难解决的问题,最后发现可以用多种方法解决,一是使用ThinkPHP的each方法解决,另一种是使用mysql的left函数,还有一种是使用分解再组合的方式解决。

最近小程序查得严,我一个图片展示不美观,被要求整改。原来是文字太多,图片没显示完的原因,只有截取字符串,可以在小程序中用js截取,也可以在程序中截图,下面分别有程序接口处理的方法。

1、ThinkPHP的each方法解决

Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10)->paginate($pagenumber,false,['query'=>request()->param()])->each(function($item, $key){

        $item["school_name"] = mb_substr($value['school_name'],1,10,'utf-8');

         return $item;

     });

2、使用mysql的left函数

Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10)

3、拆分后再组合

$list = Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10);

$data = $list->all();

foreach ($data as $k =>$v){

$item["school_name"] = mb_substr($value['school_name'],1,10,'utf-8');

$list[$k] = $v;

}

$this->assign('list', $list);

其实还有一种方法可以通过thinkphp的读写器,但必须在Model中完成。