【问题标题】:Tough str_replace, replace parts of result from sql艰难的str_replace,从sql中替换部分结果
【发布时间】:2014-07-05 06:47:34
【问题描述】:

我正在尝试从 sql 表中提取数据并使其显示图像。表格中的每个值都有图像。

来自数据库的原始数据:

["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);

有人知道我该怎么做吗?

【问题讨论】:

  • explode('"|"', trim($str, ' []'))
  • 但我试图用开始 mg 标记、结束 标记和每个图像后的
    替换它们。我有 1,106 张图像,我将它们命名为与原始数据中的项目相同的名称。我需要将每一个都制作成 .png 图像。
  • 顺便说一句,你真的应该规范你的数据库;-)
  • @Jack 我希望我能。将这些数据从游戏保存到数据库的系统是由不同于游戏开发者或我自己的开发者制作的。它是如何在每个人的服务器上设置的,所以我需要这样。

标签: php sql str-replace


【解决方案1】:

它几乎看起来像 JSON 编码,所以你可以应用一个小技巧把它变成一个数组:

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

【讨论】:

    【解决方案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']
    );
    

    【讨论】:

    • 完美!谢谢,对不起,我一直在(持续 39 小时)为此工作。我搞砸的只是img标签吗? PS:非常感谢!我会 +1,但我需要 2 个代表才能做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多