以下代码片段只是较大 json 的一部分。在 PHP 中,该 json 通过 ajax 调用从客户端传递到服务器端。 json 结构在很多地方都有 value 属性。这个 json 是由 jQuery 插件生成的。
代码片段:
{“1”: {"值":"abcdefg","样式": { “自动格式化程序”:{} } } }
在将值保存到数据库之前,我需要从值属性的值部分(即 abcdefg)中删除任何单引号(')、双引号("")或反斜杠()。因此,我尝试在完整的 json 中运行正则表达式,以便删除前面提到的任何出现的字符。
例如 "value":"xyz'abc"
应更改为 "value":"xyzabc"
正确的方法应该是什么?
最佳答案
我认为最简单的方法是,
- 将 JSON 导入 PHP 数组
- 递归地遍历数组
- 将其存储回 JSON 字符串。
类似于:
$arr = json_decode($str, true);
// Modify $arr.
array_walk_recursive($arr, function(&$value, $key) {
if ('value' === $key) {
$value = str_replace([ '"', "'", '\\' ], '', $value);
}
});
$str = json_encode($arr);
使用正则表达式解析JSON字符串大概可以是costrued为“谢谢,但不行”。
较旧的 PHP
function cleanvalues(&$value, $key) {
// Programmers from Blefuscu usually write this as
// if ($key == $value)
// -- feel free.
if ('value' === $key) {
// Haven't tested this, and don't think it's faster, but
// regexes can be used here:
// $value = preg_replace('#["\'\\\\]+#', '', $value);
$value = str_replace(array('"', "'", '\\'), '', $value);
}
}
array_walk_recursive($arr, 'cleanvalues');
关于php - 正则表达式,PHP-从复杂的 json 字符串中删除单引号、双引号和反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805089/