温馨提示×

php getopt 怎样自定义输出

PHP
小樊
81
2024-11-26 04:05:07
栏目: 编程语言

getopt 是 PHP 中的一个命令行参数解析函数,它允许你定义自己的输出格式

<?php
// 定义一个名为 my_getopt 的函数,用于解析命令行参数
function my_getopt($options, $args) {
    $opt = [];
    $long_opts = [];

    // 将选项字符串转换为长选项数组
    foreach ($options as $option => $value) {
        $long_opts[] = $option . ($value === true ? '=' : ':');
    }

    // 使用 getopt 解析命令行参数
    $options = getopt($long_opts, $args);

    // 遍历解析后的选项
    while (isset($options[$option])) {
        $opt[$option] = $options[$option] === true ? true : $options[$option];
        unset($options[$option]);
    }

    return $opt;
}

// 定义命令行选项
$options = [
    'f|file=s' => 'input-file',
    'o|output=s' => 'output-file',
    'h|help' => 'show help',
];

// 解析命令行参数
$opt = my_getopt($options, []);

// 自定义输出格式
function print_help() {
    echo "Usage: script.php [options]\n";
    echo "Options:\n";
    foreach ($options as $option => $description) {
        $value = isset($opt[$option]) ? " ($opt[$option])" : '';
        echo "  -{$option}$value  $description\n";
    }
}

function print_version() {
    echo "Script version 1.0\n";
}

// 根据解析后的选项执行相应操作
if (isset($opt['h'])) {
    print_help();
    exit(0);
} elseif (isset($opt['v'])) {
    print_version();
    exit(0);
} elseif (isset($opt['f']) && isset($opt['o'])) {
    $input_file = $opt['f'];
    $output_file = $opt['o'];
    echo "Processing file: $input_file\n";
    echo "Output file: $output_file\n";
} else {
    print_help();
    exit(1);
}

在这个示例中,我们定义了一个名为 my_getopt 的函数,它接受一个选项字符串和一个参数数组。然后,我们使用 getopt 函数解析命令行参数,并将结果存储在 $opt 数组中。接下来,我们定义了两个自定义函数 print_helpprint_version,用于以自定义格式输出帮助信息和版本信息。最后,我们根据解析后的选项执行相应的操作。

0