-1

我遇到了一个问题。我只想替换括号中的部分,但问题是如果括号中的值是 1 或同一部分中的其他值 ([x(xxx:x:x)xx];),它最终也会替换它,我需要每个部分末尾的 x(value) 。

[0(267:0:0)x1];[1(257:0:0)x1];[2(256:0:0)x1];[3(258:0:0)x1];[4(261:0:0)x1];   [5(262:0:0)x64];[6(320:0:0)x10];[7(17:0:0)x32];[8(295:0:0)x2];[9(35:0:0)x2];[10(44:1:1)x6];[11(0:0:0)x1];[12(0:0:0)x1];[13(0:0:0)x1];[14(0:0:0)x1];[15(0:0:0)x1];[16(0:0:0)x1];[17(0:0:0)x1];[18(0:0:0)x1];[19(0:0:0)x1];[20(0:0:0)x1];[21(0:0:0)x1];[22(0:0:0)x1];[23(0:0:0)x1];[24(0:0:0)x1];[25(0:0:0)x1];[26(0:0:0)x1];[27(0:0:0)x1];[28(0:0:0)x1];[29(0:0:0)x1];[30(0:0:0)x1];[31(0:0:0)x1];[32(0:0:0)x1];[33(0:0:0)x1];[34(0:0:0)x1];[35(0:0:0)x1];[103(0:0:0)x1];[102(0:0:0)x1];[101(0:0:0)x1];[100(0:0:0)x1];

我无法让这个工作。如果我尝试替换括号中部分中的 1 值,它最终会更改打印部分上的所有 1。

还要记住,括号中的零并不总是 0。

这是我尝试过的:

$items = $row['inventory'];
$test = str_replace('267', '<img href="../assets/images/items/iron_sword.png">', $items);
echo $items;

我只尝试了一行代码来看看它是如何工作的。

我正在尝试用图像替换括号中的部分(例如,第一个是 [0(267:0:0)x1];。我想用图像替换 (267:0:0).. .

4

1 回答 1

0

如果你想用相同的图像替换所有 ( * :*:*) 模式,你不能尝试 preg_replace:

$str = "[0(267:0:0)x1];[1(257:0:0)x1];[2(256:0:0)x1];[3(258:0:0)x1];[4(261:0:0)x1];";
$res = preg_replace("/\(\d+\:\d+\:\d+\)/",'<img href="../assets/images/items/iron_sword.png">', $str);

你可以在这里看到结果:http: //codepad.org/UIjGKv6n

如果你想用不同的图像替换不同的项目,那么你需要一个这样的翻译图:

$from = array(
    '(267:0:0)',
    '(257:0:0)',
    ...
);
$to = array(
    '<img href="../assets/images/items/iron_sword.png">',
    '<img href="../assets/images/items/other.png">',
    ...
);
$res = str_replace($from, $to, $str);

如果您有其他要求,您可以根据需要修改代码。

于 2013-07-24T07:31:26.183 回答