2012-11-24 130 views
1
NOTE : This is for a PHP script ! 

所以我一直在研究一个程序,但是现在我被卡住了,因为我无法正确分割数据。从字符串获取数据并将其作为PHP中的JSON返回

我有一个电话号码,只是像这样的列表:

50.0.1 581 50.0.2 545 50.0.3 541 50.0.4 18 50.0.5 2 50.0.6 33 50.0.7 1 [...] 

我补充一点信息到一个数组或JSON格式(最好JSON)。

主数据看起来像这样(我们分组):50.0.1 581所以基本上我必须从581分割50.0.1将它添加到JSON/ARRAY,然后移动到下一个组,我们的情况是50.0 0.2 545(等等)

例JSON:

{"result": { 
    "50.0.1": "581", 
    "50.0.2": "545" 
}} 

注意:第一个值将始终具有相同的格式:[0-9] {2} [0-9] [ 0-9](例如:50.0.1)

但是,第二个值可以是1到4位长:[0-9] {1,4}。

如果我没有说清楚我很抱歉 - 这很难解释。如果需要,将添加更多示例!

Thank you very much ! 

回答

0

我自己的工作解决方案:/([.\d] )\ t(\ d)/。将输出3个数组。简单结合第二和第三,我得到了我想要的。

2

只是在空间上爆炸,例如,

$arr = explode(' ', $your_string); 

然后使用每个元素对建立一个新的数组:

$newarr = array(); 
for ($i = 0; $i < count($arr); $i += 2) { // note the += 2 
    $newarr[$arr[$i]] = $arr[$i+1]; 
} 
echo json_encode($newarr); 

注意,这可能会垃圾的东西是否有这些“关键”的价值观是重复的。

+0

到目前为止它似乎工作得很好。我将用不同的例子对它进行测试,并回到这里添加一条评论,或者将其作为接受的答案。非常感谢你 ! – virusbogdan

+0

它没有将它们添加为单独的元素:http://puu.sh/1tLaM。相反,它只是一个大元素,然后:null – virusbogdan

+0

看起来像是Tab和回车分开。如果你在原帖中提到过,那会很好。所以基本上,在'\ r'上爆炸,然后爆炸'\ t'上的每个单独位,或者因为它似乎基本上是csv数据,所以在原始文件中使用fgetcsv循环。 –

0

另一种方法是在explode()之后使用array_chunk(),然后在每个对中访问JS中的值,分别为item[0]item[1]

相关问题