【发布时间】:2015-09-06 22:16:13
【问题描述】:
我正在开发一个新的 Symfony 2 项目,该项目将成为 Docker 容器的面板管理。
在这个项目中,我正在使用exec() PHP 函数执行一些命令。
我正在尝试解析以下命令的输出:
docker create tutum/lamp:latest --name test 2>&1
当命令成功时,我会在一个很好且易于使用的字符串中获取容器 ID,但是当出现问题时它就不一样了。结果是一个带有 var="data" 语法的字符串,我想解析它以获得一个数组。
命令输出:
time="2015-06-21T11:33:26+02:00" level="fatal" msg="Error response from daemon: Conflict. The name \"test\" is already in use by container XXXXXXXX. You have to delete (or rename) that container to be able to reuse that name."
我希望有这样的东西:
Array( time => "2015-06-21T11:33:26+02:00", level => "fatal" ...);
我知道我必须进行正则表达式解析。过了一会儿(正则表达式和我并不是真正的好朋友)我得到了这个正则表达式(在https://regex101.com/ 测试):
/([a-zA-Z]+)="((.*)*)"/
我使用了 preg_split 函数,我不确定它是否好用。
preg_split('/([a-zA-Z]+)="((.*)*)"/', $output)
结果是:
array(2) { [0]=> string(0) "" [1]=> string(0) "" }
你有什么建议可以帮助我吗? 非常感谢您的帮助。
【问题讨论】:
-
如果你只是 var_dump($output) 会发生什么?
标签: php regex bash symfony docker