// [ { "id": "715320" ,"t" : "500268" ,"e" : "BOM" ,"l" : "15.55" ,"l_cur" : "Rs.15.55"
,"ltt":"3:59PM IST" ,"lt" : "Sep 9, 3:59PM IST" ,"c" : "+1.69" ,"cp" : "12.19"
,"ccol" : "chg" } ]
我需要获取每个名称并为每个
分配值喜欢
$ ID = 715320;
$ E = BOM;
从以上数据来看,我该怎么做?
答案 0 :(得分:3)
由于这是JSON编码数据,您可以使用json_decode而不是正则表达式 - 这更可靠(确保删除前导\\
,因为它是注释而不是JSON)。
然后将数据输入命名变量:
$array = json_decode($string, true);
foreach ($array as $k => $v){
$$k = $v;
}
这会导致id
,t
等(现在是$ array中的键)被设置为自己的变量,例如$id
,$t
。
答案 1 :(得分:2)
你的字符串看起来像JSon数据。您应该使用JSon methods来解析内容。
如果你真的想使用正则表达式,你可以这样做:
<?php
$yourString = '// [ { "id": "715320" ,"t" : "500268" ,"e" : "BOM" ,"l" : "15.55" ,"l_cur" : "Rs.15.55"
,"ltt":"3:59PM IST" ,"lt" : "Sep 9, 3:59PM IST" ,"c" : "+1.69" ,"cp" : "12.19"
,"ccol" : "chg" } ] ';
preg_match_all("/\"(.+?)\"\s*:\s*\"(.+?)\"/", $yourString, $matches, PREG_SET_ORDER);
foreach($matches as $match){
$resultArray[$match[1]] = $match[2];
}
print_r($resultArray);
?>
在此代码中使用数组而不是变量,但如果您确实想要使用$e
之类的变量,这是一个非常糟糕的主意,您可以使用变量
您可以通过以下方式替换foreach内容:
${$match[1]} = $match[2];
资源:
关于同一主题:
答案 2 :(得分:0)
这不仅仅是JSON吗?然后看看json_decode。或者您是否有理由需要使用正则表达式?
答案 3 :(得分:0)
您不需要正则表达式,上面是JSON对象表示法,您需要对其执行php json_decode
,获取值,这将是一个关联数组:
$str='[ { "id": "715320" ,"t" : "500268" ,"e" : "BOM" ,"l" : "15.55" ,"l_cur" : "Rs.15.55"
,"ltt":"3:59PM IST" ,"lt" : "Sep 9, 3:59PM IST" ,"c" : "+1.69" ,"cp" : "12.19"
,"ccol" : "chg" } ] ';
$data=json_decode($str, true); //true to get the data as associative arrays rather than objects.
$data = $data[0];//since it's an object inside an array
从现在开始,建议将其保存为关联数组,并使用数组访问器访问对象:
$id = $data['id'];
PHP的extract
函数可用于将这些值提取到当前上下文中,但这很危险,坚持直接访问数组是一个更好的主意。