如何在Laravel Blade的句子中始终显示5个单词(标签)

时间:2017-07-12 08:39:50

标签: php laravel laravel-blade

运行查询后,我得到一系列结果(文章),其中每个结果都有idnametags等属性。

这是我显示这些值的代码:

    @foreach ( $results['matches'] as $doc => $docinfo )
    ...
    {{$docinfo['attrs']['s_tags']}}
    @endforeach

但问题是有些文章有很长的标签列表,例如:

"s_tags" => "Tech, geben, rasant, Wechsel, Pakete, Kunden, Details, Intel, Microsoft, Angebote, App, Web"

如何确保显示最多5个标签。所以在这种情况下它将是:

"Tech, geben, rasant, Wechsel, Pakete"

当然,如果有标签数少于5的文章,我想全部显示。

4 个答案:

答案 0 :(得分:2)

{{ collect(explode(', ', $docinfo['attrs']['s_tags']))->take(5)->implode(', ') }}
  • ,上分解字符串以将其转换为数组
  • 将其转换为collect的集合,以获得流畅的可读api
  • 最多5个元素
  • ,上将其删除以获取以逗号分隔的列表

答案 1 :(得分:1)

简单使用implodeexplode以及array_slice()

{{ implode(', ',array_slice(explode(',',$docinfo['attrs']['s_tags']),0,5)) }}

内爆:将数组分解为字符串

爆炸:将字符串分解为数组

Array_slice:从带有限制

的数组中获取特定的元素切片

答案 2 :(得分:0)

像这样使用array_slice()

我不知道你的标签数组。让它为$tag

$five = array_slice($tag, 0, 5);

答案 3 :(得分:0)

尝试这一点,它将有助于查询方

DB::table('articles')->chunk(5, function($results)
{
    foreach ($results['matches'] as $doc => $docinfo)
    {
         {{$docinfo['attrs']['s_tags']}}
    }
});