Отображение определенного количества тегов - PullRequest
0 голосов
/ 31 октября 2018

У меня есть список тегов в базе данных, он имеет 15 слов. Я просто хотел вытащить первый 3. Например, скажите, что у меня есть теги: яблоко, виноград, печенье, конфеты, молоко. Я хочу показать только яблоки, виноград и печенье. Как мне это сделать? Я попробовал это, но дело в том, что он пропускает остальные буквы. Кстати, я использую Laravel. заранее спасибо вот код

{{ str_limit(rtrim($users->tags,','),'36',("")) }}

Это вывод, который я получаю

Визажист, парикмахер, аэрограф

1 Ответ

0 голосов
/ 31 октября 2018

Итак, учитывая $user->tags строку

apple, orange, kiwi, lemon, pineapple

Попытка разделения и ограничения на основе одной длины не будет работать, поскольку данные будут динамическими и приведут к частичному или неполному тегу. Чтобы обойти это, используйте explode():

$tags = explode(",", $user->tags); // ["apple", "orange", "kiwi", "lemon", "pineapple"];

Теперь, когда $tags является массивом, должно быть проще взять 3 и вернуть их:

$firstThree = array_splice($tags, 0, 3); // ["apple", "orange", "kiwi"];

Теперь, когда ваш массив $tags содержит 3 элемента (или меньше, в зависимости от содержимого $user->tags), вы можете implode() преобразовать его в строку:

$tagString = implode(",", $firstThree); // apple, orange, kiwi

Далее, сложите все вместе. В вашем случае это, вероятно, проще сделать как функцию вашего $user:

public function tagString(){
  $tags = explode(",", $this->tags);
  $firstThree = array_splice($tags, 0, 3);
  return implode(",", $firstThree);
}

И, в вашем блейд-файле:

{{ $user->tagString() }}

И это сделало бы это!

Опять же, есть много способов сделать это. Можно привести аргумент в пользу простого регулярного выражения, ограничивающего значение $user->tags первыми 3 экземплярами word,, но регулярное выражение не является моей областью знаний. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...