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

How to display always 5 words (tags) from a sentence in 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的文章,我想全部显示。

{{ collect(explode(', ', $docinfo['attrs']['s_tags']))->take(5)->implode(', ') }}
  • 分解 , 上的字符串,将其变成数组
  • 将它变成一个集合 collect 以获得流畅的可读性 api
  • 最多取5个元素
  • 将其嵌入 , 以恢复逗号分隔列表

像这样使用array_slice()

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

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

简单使用implodeexplodearray_slice()

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

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

分解:将字符串分解成数组

Array_slice : 从具有限制的数组中获取元素的特定切片

试试这个,它对查询方面有帮助

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