有没有办法解析print_r的输出

Ita*_*vka 2 php arrays string parsing

可能重复:
创建使用print_r打印的数组

重复如何从print_r打印的数组的输出创建数组? 这也有一个很好的代码示例来解决这个问题

我需要反转一个输出错误日志print_r($data,true).
示例数据如下所示:

Array
(
    [subject] => this is the subject
    [body] => <p>Dear user,</p><p>this is the body of the email</p>
    [from_id] => 0
    [from_email] => admin@karakas.org
    [to] => Array
        (
            [0] => Array
                (
                    [id] => 0
                    [email] => 64909
                )

        )

    [send_to_inbox] => 1
)
Run Code Online (Sandbox Code Playgroud)

Jai*_*ils 6

在PHP手册中有一个print_r_reverse()评论函数:http: //php.net/manual/en/function.print-r.php

但是,var_export()如果使用生成日志,则可以替代var_export().这样,您只需要eval()检索导出的数组.


SDC*_*SDC 5

的输出print_r()不是为了解析而设计的;它旨在供开发人员出于调试目的而阅读。您不应该尝试解析它。

如果您确实必须解析这种性质的 PHP 数据转储,那么该var_export()函数就是用于此类事情的。但是,我也不建议解析它——它仍然不太可能是最适合您的解决方案。

如果您的目的是存储数组结构的字符串表示形式,然后稍后解析它,那么最好使用serialize()/unserialize()函数或json_encode()/json_decode()函数。

这两者都将为您提供更可靠且更易于解析的数据转储格式。在这两者中,我json_encode()每次都会推荐它,因为它不仅易于使用,而且还支持其他语言,易于手动阅读且紧凑。

简而言之,不要解析print_r()输出;使用json_encode()/json_decode()代替。

https://www.php.net/manual/en/function.json-encode.php