1

$argv 数组包含几乎相同的值,我找不到确切的值。我的意思是特殊符号的所有转义/引用都消失了。因此,我不能在不重新处理的情况下将相同的参数传递给另一个脚本(或简单地记录调用的确切命令),这是我想避免的无用代码。

这是一个测试php文件:

<?php
var_dump($_SERVER["argv"]);

示范:

[denis@mypc ~]$ php test.php key="val space" key2=val\ space
array(3) {
  [0]=>
  string(8) "test.php"
  [1]=>
  string(13) "key=val space"
  [2]=>
  string(14) "key2=val space"
}

所以如果我再使用 join(" ", $argv) 我会得到:

test.php key=val space key2=val space

这不是同一个调用(包含 4 个参数,而不是 2 个)。

再说一遍:理想情况下,我需要得到我正在执行的完全相同的命令。

4

1 回答 1

5

你必须像这样处理你的论点

$arguments = $argv;
array_shift($arguments);
foreach($arguments as $value) {
    $pieces = explode('=',$value);
    if(count($pieces) >= 2) {
        $real_key = $pieces[0];
        array_shift($pieces);
        $real_value = implode('=', $pieces);
        $real_arguments[$real_key] = $real_value;
    }
}

该数组$real_arguments包含进程值

于 2012-11-14T07:49:45.623 回答