如何清理此JSON字符串数据?初看起来使用 str_replace 方法非常容易,但事实并非如此。此JSON字符串是表单JSON对象,具有ex的空格。 {“名字”:“某事”}。因此,当我将其转换为json字符串时,空字符将被不需要的字符串(\ u00a0)替换。我认为这个问题可以使用 preg_replace 解决,但突然间我不知道逗号,双引号,冒号的正则表达式。这个字符是json字符串格式所必需的。请帮帮我。
例如
{"AS_applicant_Data__c":
"{
\"Last Name\u00a0\":\"SDFSAD\",
\"First Name\u00a0\":\"SDFAFSDA\",
\"Middle Name\u00a0\":\"SAFDSAFD\",
\"Gender\u00a0\":\"Male\"
}"
}
到
{"AS_applicant_Data__c":"
"{
"Last Name":"SDFSAD",
"First Name":"SDFAFSDA",
"Middle Name":"SAFDSAFD",
"Gender":"Male"
}"
}
答案 0 :(得分:1)
我使用此代码对我来说没问题:
<?php
$string = <<<EOD
{"AS_applicant_Data__c":
"{
\"Last Name\u00a0\":\"SDFSAD\",
\"First Name\u00a0\":\"SDFAFSDA\",
\"Middle Name\u00a0\":\"SAFDSAFD\",
\"Gender\u00a0\":\"Male\"
}"
}
EOD;
$pattern = '#\\\\u[0-9a-f]{4}#i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>
这个正则表达式盲目地用\ uxxxx格式的空字符串替换Unicode char。如果您确定只有\ u00a0,则可以将正则表达式更改为#\\\\u00a0#i
尝试快速浏览:http://ideone.com/xW4zTN
答案 1 :(得分:0)
当我使用这个
preg_replace("/[^a-zA-Z]/", "", $str);
时,它会 删除所有特殊字符。有可能跳过 逗号,双引号,花括号和冒号?
当然是,只需在字符类中包含那些特殊字符(引号必须用反斜杠转义):
preg_replace("/[^a-zA-Z,\"{}:]/", "", $str);