PHP-CLI似乎解析从参数
使用PHP 5.3的JSON字符串,如果我发送一个JSON字符串编码通过命令行的arugment ...PHP-CLI似乎解析从参数
/usr/local/bin/php -q /path/to/script.php {"key":"test","cache":1}
...在script.php的代码:
<?php print_r($argv); ?>
我回去:
Array
(
[0] => /path/to/script.php
[1] => key:test
[2] => cache:1
)
这是完全出乎意料!
虽然我可以忍受这一点,但我想知道这是由PHP记录的,所以我100%确定它会像这样工作,如果我每次都传递一个JSON编码的字符串作为参数。
同样,JSON字符串内的数组似乎没有按预期工作。
如果想在命令行参数使用特殊字符,你应该总是encapse他们在报价
"{\"key\":\"test\",\"cache\":1}"
'{"key":"test","cache":1}'
是的我认为,但有趣的是,PHP试图解析字符串,但这个功能似乎并不为人所熟知。 – fire 2011-05-09 15:30:43
@Fire:它的记录:http://php.net/manual/en/reserved.variables.argv.php – 2011-05-09 15:35:03
正如你可以在你的输出中读取它的未解析。在命令行中,您可以通过列表符号'{a,b,c}'(例如在'mkdir -p path/to/{folderA,folderB}'中)一次定义多个参数。 JSON对象看起来很相似,因此被误解了。据我所知,它不是PHP的错误,而只是CLI调用“工作”的方式。 – KingCrunch 2011-05-09 15:37:21
你弄清楚如何在PHP脚本的命令行参数解析JSON? – 2013-05-23 17:44:53