显示特定数量的标签

时间:2018-10-31 17:59:47

标签: laravel

我在数据库中有一个标签列表,它有15个字。我只想提取第一个3,例如说我有苹果,葡萄,饼干,糖果,牛奶作为我的标签,我只想显示苹果,葡萄和饼干,我该怎么做?我试过了,但问题是,其余的字母都没有了。顺便说一句,我正在使用laravel。提前致谢 这是代码

docer-compose azure-blob-storage: image: arafato/azurite ports: - "10000:10000" - "10002:10002" volumes: - data-volume:/opt/azurite/folder CloudTable table = tableClient.getTableReference(tableName) table.createIfNotExists() -- there is error

这是我得到的输出

化妆师,发型师,空中小姐

1 个答案:

答案 0 :(得分:2)

因此,鉴于

$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的值限制为word,的前三个实例,但是Regex不是我的专业领域。希望有帮助!