如何在 php preg_replace 中用双引号将数字括起来?
How to surround numbers with double quotes in php preg_replace?
我有一个json似乎无效
{
"systemId": 4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}
因此,它无法在 php 中转换为数组,我尝试了 json lint,它在 02 处显示错误。
经过一些研究,我发现 json 中从 0 开始的值是无效的。
当我用双引号 "" 将 02 括起来时,使用 json_decode.
成功将其转换为数组
所以我想知道,假设 json 是一个字符串,我如何给数字添加引号。
<?php
$data = '{
"systemId":4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}';
$data = str_replace('}', '', str_replace('{', '', $data));
echo '<pre>';
$t = preg_match_all("/(?<=\:)(.*?)(?=\,)/", $data, $matches);
$i=0;
foreach($matches[1] as $key => $value){
if(is_numeric($value)){
$matches[1][$i] = '"'.$value .'"';
}
$data = str_replace($value, $matches[1][$i], $data);
$i++;
}
$data = rtrim(trim($data),','); //remove last comma
$data = '{'.$data .'}';
$data = json_decode($data,true);
print_r($data);
肮脏的解决方案,我 100% 同意 "fix" 你的 json 在你得到回应之前的想法。
如果您真的必须用那种方式在代码中修复 json,上面的代码将帮助您。
我首先修剪大括号的原因是为了让数据字符串更清晰。当我完成所有需要完成的事情后,我将它们连接成最终格式。
代码的结果是:
Array
(
[systemId] => 4424
[professional] => 88928
[gate] => 532
[mock] => 02
[wish] => this
[transaction_id] => eeases-323fasfse-asdfe33
[channel] => API
)
从有效 json
解码的数组
我有一个json似乎无效
{
"systemId": 4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}
因此,它无法在 php 中转换为数组,我尝试了 json lint,它在 02 处显示错误。
经过一些研究,我发现 json 中从 0 开始的值是无效的。
当我用双引号 "" 将 02 括起来时,使用 json_decode.
成功将其转换为数组所以我想知道,假设 json 是一个字符串,我如何给数字添加引号。
<?php
$data = '{
"systemId":4424,
"professional":88928,
"gate":532,
"mock":02,
"wish":"this",
"transaction_id":"eeases-323fasfse-asdfe33",
"channel": "API",
}';
$data = str_replace('}', '', str_replace('{', '', $data));
echo '<pre>';
$t = preg_match_all("/(?<=\:)(.*?)(?=\,)/", $data, $matches);
$i=0;
foreach($matches[1] as $key => $value){
if(is_numeric($value)){
$matches[1][$i] = '"'.$value .'"';
}
$data = str_replace($value, $matches[1][$i], $data);
$i++;
}
$data = rtrim(trim($data),','); //remove last comma
$data = '{'.$data .'}';
$data = json_decode($data,true);
print_r($data);
肮脏的解决方案,我 100% 同意 "fix" 你的 json 在你得到回应之前的想法。
如果您真的必须用那种方式在代码中修复 json,上面的代码将帮助您。
我首先修剪大括号的原因是为了让数据字符串更清晰。当我完成所有需要完成的事情后,我将它们连接成最终格式。
代码的结果是:
Array
(
[systemId] => 4424
[professional] => 88928
[gate] => 532
[mock] => 02
[wish] => this
[transaction_id] => eeases-323fasfse-asdfe33
[channel] => API
)
从有效 json
解码的数组