被困于将这个Javascipt代码(从SO)“转换”为php。
考虑"AAA='111' BBB='222' DD='333' CC='dao@toto.fr'"
来自先前json对象键的值。
1-从某些API帖子中收到了json
{
"first_key": "first_value",
"sec_key": "sec_value",
"third_key": "AAA='111' BBB='222' DD='333' CC='dao@toto.fr'",
}
2-希望像这样将Third_key值导出为新的json
{ "AAA": "111", "BBB": "222", "DD": "333", "CC": "dao@toto.fr" }
所以
<body>
<script type="text/javascript">
var input="AAA='111' BBB='222' DD='333' CC='dao@toto.fr'";
var result={};
input.split("'").forEach(function(value,i,arr){
if(i%2===0) return;
var key=arr[i-1].trim().replace("=","");
result[key]=value;
});
console.log(result);
</script>
</body>
大约在我想要的控制台中得到了这个
Object { AAA: "111", BBB: "222", DD: "333", CC: "dao@toto.fr" }
预期输出:
Object { "AAA": "111", "BBB": "222", "DD": "333", "CC": "dao@toto.fr" }
如何在PHP中获得预期的输出?搜索引擎使我进入了json_encode/json_decode
函数,与我所寻找的内容无关。
答案 0 :(得分:3)
在PHP中,您可以使用正则表达式来提取名称和值,然后使用array_combine()
将其结果合并为一个关联数组,然后json_encode()
将结果数组组合起来,非常简单。
$third_key = "AAA='111' BBB='222' DD='333' CC='dao@toto.fr'";
preg_match_all("/(\w*)='(.*?)'/", $third_key, $matches);
print_r($matches);
echo json_encode(array_combine($matches[1], $matches[2]));
这给...
Array
(
[0] => Array
(
[0] => AAA='111'
[1] => BBB='222'
[2] => DD='333'
[3] => CC='dao@toto.fr'
)
[1] => Array
(
[0] => AAA
[1] => BBB
[2] => DD
[3] => CC
)
[2] => Array
(
[0] => 111
[1] => 222
[2] => 333
[3] => dao@toto.fr
)
)
{"AAA":"111","BBB":"222","DD":"333","CC":"dao@toto.fr"}
print_r($matches);
仅在这里显示正则表达式如何将原始字符串拆分为部分,以及最后一行如何用于创建结束数组。