2017-07-12 66 views
0

運行查詢後,我得到一組結果(文章),其中每個結果(文章)均具有其屬性,如id,nametags如何在Laravel Blade中從句子中始終顯示5個單詞(標記)

這是代碼,我顯示這些值:

@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,我想顯示他們所有。

+0

你可以收集只需5標籤與查詢。你的情況可能嗎? –

+0

這是不可能的。我需要從一個句子(簡單字符串)中提取5個單詞,而不是一個數組。 – harunB10

回答

2
{{ collect(explode(', ', $docinfo['attrs']['s_tags']))->take(5)->implode(', ') }} 
  • 發生爆炸,字符串以collect把它變成一個數組
  • 把它變成一個集獲得流暢的程序API最多5個元素
  • 採取
  • 爆它,讓您的逗號分隔列表返回
+0

它仍然顯示所有標籤。但標籤是一個句子,每個標籤之間用逗號分隔。所以'拿(5)'在這種情況下不起作用。 – harunB10

+0

你是什麼意思一句話?你的意思是一個字符串?爆炸在每個逗號分割字符串的意思是從''a,b,c,d'''你會得到'['a','d','c','d']'。 –

+0

是的,一個字符串。看看我的帖子,我展示了一個's_tags'的例子。我正在嘗試你的解決方案,但它不起作用:(。 – harunB10

0

使用array_slice()像這樣:

我不知道你的標籤數組。讓它成爲$tag

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

簡單使用implodeexplodearray_slice()

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

內爆:陣列打入串

爆炸:串分解成陣列

Array_切片:從陣列獲取元素的特定片段與限制

+0

就像@Ben Swinburne的解決方案一樣:完全沒有變化:/ – harunB10

+0

這兩種解決方案都能正常工作。我犯了一個錯誤,因爲我在錯誤的地方實施了這個。謝謝! – harunB10

0

試試這個它會從查詢側幫

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

我使用Sphinx搜索(https://github.com/sngrl/sphinxsearch) - '$ results = $ cl-> search('@ *'。$ name,'spots');' – harunB10

相關問題