【问题标题】:How to parse this format?如何解析这种格式?
【发布时间】:2020-05-15 15:27:09
【问题描述】:

我正在尝试解析一个如下所示的字符串: "['x','y','z',['a'],[],[['name','2'],['name','40']]]"

我想把所有东西都放在一个这样的数组中:

 0 => string 'x' (length=1)
  1 => string 'y' (length=1)
  2 => string 'z' (length=1)
  3 => 
    array (size=1)
      0 => string 'a' (length=1)
  4 => 
    array (size=0)
      empty
  5 => 
    array (size=2)
      0 => 
        array (size=2)
          0 => string 'name' (length=4)
          1 => string '2' (length=1)
      1 => 
        array (size=2)
          0 => string 'name' (length=4)
          1 => string '40' (length=2)

有没有合适的方法来做,因为我试图做一堆函数,但最后总是一团糟,它不起作用。

【问题讨论】:

  • 如果你用"替换',那么你就有了一个JSON字符串并且可以json_decode()它。
  • 谢谢,我知道我可以使用 json_decode,但是因为开头和结尾都有 "",所以它不起作用。
  • 像这样批量替换引号只会在您获得实际包含引号的数据之前起作用,此时它将无法解码或破坏数据。您需要修复产生这种无意义编码的原因,或者实施适当的解码器。

标签: php serialization


【解决方案1】:

这几乎是一个 JSON 字符串,因此将其合二为一,然后从那里轻松运行

$nearlyJson = "['x','y','z',['a'],[],[['name','2'],['name','40']]]";

$nowItsJson = str_replace("'", '"', $nearlyJson );

$NowItsAPHPArray = json_decode($nowItsJson );
print_r($NowItsAPHPArray );

结果

Array
(
    [0] => x
    [1] => y
    [2] => z
    [3] => Array
        (
            [0] => a
        )

    [4] => Array
        (
        )

    [5] => Array
        (
            [0] => Array
                (
                    [0] => name
                    [1] => 2
                )

            [1] => Array
                (
                    [0] => name
                    [1] => 40
                )
        )
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2018-03-07
    • 2018-03-01
    • 2021-08-29
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多