如何分解要在图像标签中使用的字符串
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
我以字符串格式在数据库列中存储了多个图像,例如
"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