繁体   English   中英

困难的str_replace,替换sql结果的一部分

[英]Tough str_replace, replace parts of result from sql

我正在尝试从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);

有人知道我该怎么做吗?

它几乎看起来像JSON编码,因此您可以运用一些技巧将其转换为数组:

$items = json_decode(strtr($row["wea"], '|', ','), true);
$result = array_map(function($item) { 
    return sprintf('<img src="admin/images/thumbs/%s.png">', $item);
}, $items);

就像我说的,您可以通过以下方式将项目作为数组获得:

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']
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM