从具有特定模式PHP的字符串中删除额外字符

Removing extra characters from a string with a specific pattern PHP

本文关键字:字符串 删除 字符 PHP 模式      更新时间:2023-09-26

我正在将数据从python函数的输出移动到php,然后将其转换为JSON并将其发送到使用AJAX调用它的javascript函数。

格式应该像这样:

{"data_name" : [1.02, 3.013, -24.12, 39], "data_name_2" : [-0.32151], "data_name_3" : [0.321, -21.42425, 225125.002]}

现在,python通过json.dumps返回数据,当它到达PHP时,输出有点奇怪。由于数据已经是来自Python的json, json_encode不能正常工作,但只是回显json数据产生如下:

"[{'"data_name'" : [[1.02], [3.013], [-24.12], [39]]}, {'"data_name_2'" : -0.32151}, {'"data_name_3'" : [[0.321], [-21.42425], [225125.002]]}, null]"

那么我该如何做以下事情呢?

  1. 从字符串
  2. 的开头移除第一个"[
  3. 删除引号前的所有反斜杠(因此'"data_name'"变成"data_name")
  4. 从每个字段中删除}, {(第一个字段除外)
  5. 对于2D数组,去掉内部的[]符号,使[[1.02], [2.02]]变成[1.02, 2.02]
  6. 对于单个数字,在其周围添加[],因此-0.32151变为[-0.32151]
  7. 最后,一旦我达到}, null]",我想删除, null]",只保留最后的}

我对strpos有一点了解,但我不确定如何将其与某种形式的正则表达式合并,或者如果我需要手动循环字符串来处理每个步骤。如果有人知道如何开始,我将不胜感激。

我同意Sammitch的观点。

快速修复2。stripslashes

对于其余部分,您可以使用preg_replace创建可以正确过滤它的模式,但是为什么不直接更改python输出呢?