php - 正则表达式,PHP-从复杂的 json 字符串中删除单引号、双引号和反斜杠

标签 php jquery json regex

以下代码片段只是较大 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/

相关文章:

php - 如何从存储在 php 变量中的日期值获取下一年的日期

javascript - 单选按钮更改无法正常使用ajax

json - Freddy JSON - 将集合复制到新数组中

json - Grails不为json添加标题

c# - jquery.POST 到 MVC Controller 以返回 JSON

php - 私有(private)方法覆盖和可见性

php - MPDF dejavuserifcondensed.mtx.php 没有那个文件或目录

php - PHP中is_null "== NULL"和 "=== NULL"的区别

javascript - 点击事件覆盖自身 jQuery

javascript - Nivo slider 调整主图像的高度