我正在尝试从sql表中提取数据并使其显示图像。我有表中每个值的图像。
数据库中的RAW数据:
["NVGoggles"|"ItemMap"|"ItemCompass"|"ItemWatch"|"ACE_CharliePack_ACU_Medic"|"Binocular"|"ACRE_PRC148_ID_2"|"ACRE_PRC343_ID_7"|"CZ805_B_GL_ACR"]
这是游戏中的库存。
我想这样做,所以每个项目都是一个图像。
我试过这个:
$wea = str_replace('["', '<img src="admin/images/thumbs/', $row["wea"]) & str_replace('"|"', '.png</img><br><img src="admin/images/thumbs/', $row["wea"]) & str_replace('"]', '.png</img>', $row["wea"]);
我试过
$wea = str_replace('["', '<img src="admin/images/thumbs/', $row["wea"]);
$wea2 = str_replace('"|"', '.png</img><br><img src="admin/images/thumbs/', $wea);
$wea3 = str_replace('"]', '.png</img>', $wea2);
有人知道我该怎么做吗?
答案 0 :(得分:4)
它几乎看起来像JSON编码,因此您可以应用一个小技巧将其转换为数组:
$items = json_decode(strtr($row["wea"], '|', ','), true);
$result = array_map(function($item) {
return sprintf('<img src="admin/images/thumbs/%s.png">', $item);
}, $items);
答案 1 :(得分:2)
正如我所说,你可以将项目作为数组获得:
explode('"|"', trim($str, ' []'))
但如果你想要自己的方式,那么正确的代码就是:
$wea = str_replace('["', '<img src="admin/images/thumbs/', $row["wea"]);
$wea2 = str_replace('"|"', '.png" /><br><img src="admin/images/thumbs/', $wea);
$wea3 = str_replace('"]', '.png" />', $wea2);
作为正确的html img
标记是:
<img src="admin/images/thumbs/file.jpg" />
同样str_replace
可以在一次调用中替换多个值:
$wea = str_replace(
array('["', '"|"', '"]'),
array(
'<img src="admin/images/thumbs/',
'.png" /><br><img src="admin/images/thumbs/',
'.png" />',
),
$row['wea']
);