PHP CLI : using argv and getopt not working

标签 php command-line-interface argv getopt

尝试使用 argv 变量和 getopt() 似乎不起作用。除了使用 all - 或 -- 选项之外,任何人都知道解决方法:

<?php
$arr[] = "test:";
$options = getopt(NULL, $arr);
echo $options["test"];
?>

上面的简单示例,当我运行时:

php test.php --test="Hello World"

世界你好

php test.php argv --test="Hello World"

没有输出,因为我放置的值前面没有 - 或 -- 。

最佳答案

function get_opt() {
    $options = array();
    foreach( $_SERVER[ "argv" ] as $key => $arg ) {
        if ( preg_match( '@\-\-(.+)=(.+)@', $arg, $matches ) ) {
            $key   = $matches[ 1 ];
            $value = $matches[ 2 ];
            $options[ $key ] = $value;
        } else if ( preg_match( "@\-(.)(.)@", $arg, $matches ) ) {
            $key   = $matches[ 1 ];
            $value = $matches[ 2 ];
            $options[ $key ] = $value;
        }
    }
    return $options;
}

关于PHP CLI : using argv and getopt not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960576/

相关文章:

php - 查询 MySQL 数据库数十次以允许有效缓存比一些缓存较少的大型查询更好?

php - 如何保护高流量网站的成员(member)照片

php - 无法加载 php5apache2_2.dll

c - 如何编写自己的 isnumber() 函数?

c - OpenCV argc 和 argv 混淆

c - 为什么用 argv[] 调用 sscanf() 只能使用一次?

php - 如何匹配 &lt;iframe&gt; 标签的一部分?

css - Parse.com CLI 工具在部署时忽略 CSS 文件

ruby - 使用不同的名称从命令行调用 ruby​​ gem

c# - 使用 .net core CLI 和 .net core 控制台应用程序有什么区别?