【发布时间】:2015-01-26 13:20:16
【问题描述】:
我有如下字符串需要拆分:
Other,CODSITE,Items::getCodCdeCli+Address::getNameAddress
Other,CODSITE,Items::getCodCdeCli
Items::getCode+Address::getName,CODSITE+Items::getSample,Items::getItemID
Other, CODSITE, CODSITE2
进入:
array(
array(
0 => 'Other',
1 => 'CODSITE',
2 => array(
'Items' => 'getCodCdeCli',
'Address' => 'getNameAddress'
)
),
//...
)
每个逗号都包含新信息,如果我们有一个“+”,我们需要附加两个数据。如果我们有'::',我们需要获取第一部分作为结果信息的键。
为了开始这个解决方案,我尝试用逗号分隔:
$re = "/([^,]+)/";
$str = "Other,CODSITE,Items::getCodCdeCli+Address::getNameAddress";
preg_match_all($re, $str, $matches);
现在有了这个正则表达式,我有这个:
array (size=2)
0 =>
array (size=3)
0 => string 'Other' (length=5)
1 => string 'CODSITE' (length=7)
2 => string 'Items::getCodCdeCli+Address::getNameAddress' (length=43)
1 =>
array (size=3)
0 => string 'Other' (length=5)
1 => string 'CODSITE' (length=7)
2 => string 'Items::getCodCdeCli+Address::getNameAddress' (length=43)
这是错误的。我有两次相同的结果.. 并且第 2 行 => [...] 没有拆分(这对我的正则表达式来说是正常的)
【问题讨论】:
-
2 次完成。先用逗号分割,然后匹配到数组的第三个元素。
-
这似乎可以在不使用正则表达式的情况下实现。您是否尝试过对您感兴趣的特定字符使用
split函数来解决此问题? -
我得到的这个字符串,来自一个PHP表单,可以完全不同,有3个以上的部分,并且可以尽可能多地重复这个例子。