Php 有没有办法解析print\u r的输出

Php 有没有办法解析print\u r的输出,php,arrays,string,parsing,Php,Arrays,String,Parsing,可能重复: 副本 这也有一个很好的代码示例来解决这个问题 我需要反转一个错误日志,该日志的输出为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 [f

可能重复:

副本 这也有一个很好的代码示例来解决这个问题

我需要反转一个错误日志,该日志的输出为
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
)
数组
(
[主题]=>这是主题
[body]=>亲爱的用户,

这是电子邮件的正文

[来自\u id]=>0 [来自电子邮件]=>admin@karakas.org [至]=>阵列 ( [0]=>阵列 ( [id]=>0 [电子邮件]=>64909 ) ) [发送到收件箱]=>1 )
在PHP手册中,注释中有一个
print\u r\u reverse()
函数:


但是,如果您的日志是使用
var\u export()
生成的,则
var\u export()
可以作为替代方法。这样,您只需
eval()
即可检索导出的数组。

print\r()的输出不是为解析而设计的;它被设计为供开发人员出于调试目的读取。您不应该试图解析它

如果您真的必须解析这种性质的PHP数据转储,那么该函数就是针对这种情况设计的。但是,我也不建议对其进行解析——它仍然不太可能是您的最佳解决方案

如果您打算存储数组结构的字符串表示形式,然后稍后对其进行解析,那么最好使用
serialize()
/
unserialize()
函数或
json\u encode()
/
json\u decode()
函数

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

简而言之,不要解析
print\u r()
output;使用
json\u encode()
/
json\u decode()


虽然不是解决方案-如果您控制
错误日志
调用,将来您可以
错误日志(序列化($data))可以不序列化。如果您继续遇到此问题,您可以使用正则表达式来执行此操作。将来可能会考虑使用
var\u export
而不是
print\u r
。我不确定您是否可以简单地“反转”
print\r
,因为字符串的开头/结尾不明确。当您说“反转”时,您希望以什么格式结束?这段代码(反向)会部署到生产环境中吗,或者只是一些脚手架来帮助您解决问题?(有些策略可能有效,也可能无效,这取决于你试图完成的任务。)在这里使用@hakre的脚本,我使用它,效果很好。