优秀的编程知识分享平台

网站首页 > 技术文章 正文

Josn字符串上含有异常字符的处理(提示字符串)

nanyue 2024-08-26 17:57:15 技术文章 6 ℃

上周收到了一个三手的Bug, 有用户发现虽然是成功交易却没有上传到服务器上,我估计这应该能从日志上查出原因,不知道为什么倒了这几手还没有结果。接着我从各种日志中进行排查,果然从终端上传最原始的数据中,发现有一个json的value值有<0x1d>这个字符,这个字符会在进行json字符串转json对象时出错,并造成后续的json对象的取值失败。这个<0x1d>从字符表里可以查到是一个控制字符,不知道是从那里引入的。

然后就想到正则替换本能过滤这个异常。

<?php

$str = '{"state":true,"info":{"MachineID":"M*******DBWW0<0x1d>C7073027","RandomNumber":"112233441******","DeviceType":"0"}';

$filteredString = preg_replace('/[\x00-\x1F\x7F].*?"/', '"', $str);

$json_obj = json_decode($filteredString);

print_r($json_obj);

?>

以下是输出结果

(

[state] => 1

[info] => stdClass Object

(

[MachineID] => "M*******DBWW0

[RandomNumber] => 12233441******"

[DeviceType] => 0

)

)

Tags:

最近发表
标签列表