【发布时间】:2011-12-29 17:31:47
【问题描述】:
我遇到了一个表面上看起来很简单的问题,但它打败了我微薄的正则表达式技能。我有一个字符串,我需要将其转换为数组,然后相应地处理值,这很简单,但是字符串的格式无法更改(它是在其他地方生成的),它的逻辑让我感到困惑。
字符串是:
[6] [2] [3] 12.00; [5] [4]
它基本上是一组 id 和十进制值(在本例中 id 3 == 12.00)。 id 的数量可以随时更改,十进制值可以在任何或所有 id 中。
在理想的世界中,我会有以下数组:
Array (
[0] => Array (
[id] => 6
[num] =>
)
[1] => Array (
[id] => 2
[num] =>
)
[2] => Array (
[id] => 3
[num] => 12.00
)
Etc...
你们中的任何正则表达式向导都知道如何以比我能够做到的更少的脏话来实现这一点吗?
到目前为止,我已经能够使用以下方法提取 id:
preg_match_all('@\[(.*?)\]@s', $string, $array);
小数使用:
preg_match_all('/([0-9]+[,\.]{1}[0-9]{2})/', $string, $array);
但失去了 id 和 value 之间的相关性。
【问题讨论】:
-
你可以用explode&strstr解决这个问题,它在性能方面比正则表达式更好。