我几乎没有雷克斯的经验,但尽我所能。PHP preg_match_all表达式
我有一个这样的字符串:
$fString = "Name=Sök,Value=2,Title=Combine me,Options=[Item1=1,Item2=2,Item3=3]";
我想获得一个数组看起来像这样:
Array[0] = "Name=Sök"
Array[1] = "Value=2"
Array[2] = "Title=Combine me"
Array[3] = "Options=[Item1=1,Item2=2,Item3=3]"
我已经设法到目前为止做的是:
preg_match_all("/[^,]*[\w\d]*=[^,]*/",$fString,$Data);
但我不知道如何解决最后的“选项”。
Array ([0] => Array ([0] => Name=S�k [1] => Value=2 [2] => Title=Combine me [3] => Options=[Item1=1 [4] => Item2=2 [5] => Item3=3]))
...为什么是结果的阵列内的阵列?!?
[编辑]
我想我需要解释什么,我想在这里做整体的想法,我不知道我是在正确的轨道任何更多。
我创建了一些类,我将所有“持久”变量存储在一个数组中。我有一个序列化这个数组的函数,所以我可以存储在一个数据库中。我知道所有关于serialize()函数,但我正在做一些过滤,所以我不能像原样使用它,而且我也更喜欢让它更易于手动编辑。这个数组可以嵌套数组,需要保存。当我从数据库中读取所有数据时,必须重新创建原始数组。我已经使用eval()命令,但偶然发现了因为“或”字符打破了主外部字符串而嵌套数组的问题,所以这种方法试图在没有嵌套字符串的情况下序列化所有东西需要加以保留。
所以,如果我能解决preg_match_all我有嵌套数据,否则我需要拿出另一种解决方案。
我猜的数据需要进行转义为好,如[,]和[]
结果总是在一个数组中。 $数据输出始终是一个多维数组,其中包含多个结果类型。 – powtac 2011-01-11 10:27:28
这些值可以有逗号,例如`“Title = Combine,me”`?如果是,那么如何处理? – Tomalak 2011-01-11 10:52:12
然后你需要一个迷你解析器。看看@SirDarius做了什么。你只需要一些东西来寻找最近的``,``或`[`,然后下降```或者将收集到的列表返回给`````。 – mario 2011-01-11 15:48:06