如何分解要在图像标签中使用的字符串

how to explode a string to use in a image tag

我以字符串格式在数据库列中存储了多个图像,例如 "image1 image2 image3" 通过使用 implode(" ",$imagesArray) 现在我想分解这个字符串并想在图像源名称中使用它,就像我在下面尝试的那样

@foreach (explode(" ",$images) as $item)
<img src="{{ asset('storage/images'.$item) }}">
@endforeach

它分裂成这样

 0 => "[{"image":"image3.png"
  1 => "image3.png"
  2 => "image3.png"}]"

我希望它像

一样分裂
 0 => "image3.png"
  1 => "image3.png"
  2 => "image3.png"

是的图像存储在本地 storage/images 路径,

是的,$Images 包含

[{"image":"image1.png image2.png image3.png"}]

我如何将每个图像用于图像 src 请帮助我,我是 php 和 laravel 的新手,提前致谢

如果您向我们展示如何从数据库中获取数据,我们或许可以避免解码为下面使用的数组。

从您显示的内容来看,您似乎有一个 JSON 字符串。如果是这样,你不应该马上爆炸它,而是先解码它并得到你想要的道具,然后再爆炸它:

@php
     $string = '[{"image":"image1.png image2.png image3.png"}]';
     $rows   = json_decode($string, true);
@endphp

@foreach ($rows as $row)

     @php
        $imageStr = $row['image'] ?? '';
        $images   = explode(" ", $imageStr);
     @endphp

     @foreach ($images as $image)
        <img src="{{ asset('storage/images'.$image) }}">
     @endforeach

@endforeach

##注意 如果我这样做,我可能会将逻辑移动到控制器,将每个图像路径添加到一个数组,将该数组传递给视图,然后让视图简单地遍历该数组输出每个图像标签。这样所有的视图就不会被所有的逻辑搞得乱七八糟。

根据您的评论 $images 是一个 JSON 字符串,因此您需要先对其进行解码:

@foreach (explode(' ', json_decode($images, true)[0]['image'] ?? '') as $image)
    <img src="{{ asset('storage/images/'.$image) }}">
@endforeach

假设数组可以有多个元素,如@WeslySmith 的评论中所指出的

//Say images has value like
$images = ['{"image":"image1.png image2.png image3.png"}','{"image":"image4.png image5.png image6.png"}'];

$pathString = collect($images)->map(function($image) {
    return json_decode($image)->image;
})
  ->values()
  ->reduce(function($carry, $item){
      return $carry .= $item;
  });

然后

@foreach (explode(' ', $pathString as $image)
    <img src="{{ asset('storage/images/'.$image) }}">
@endforeach