


How to parse GNU C-style command line options through getopt in PHP
In PHP, when we get command line parameters, we can get them by traversing $argv. In fact, there are specifications to follow, that is, GNU C-style parser for command line options.
For example, when using the command wget to download a file, you can use some of the following methods to specify options
wget http://mengkang.net/a.jpg -O b.jpg wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -b wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd
Let’s sort out the rules of command line options. First, the parameters are divided into short parameter names and complete parameter names. , and some also have mapping relationships. For example, when we use wget, -O corresponds to --output-document.
Summary options usage specifications
● There is a restriction for short option names, which can only be one char character, which can only be 1 byte and cannot exceed 1 byte. For example, it is not known whether the last parameter of the fourth command above is one option or three options.
● Short option names start with a single hyphen (-)
● Short options can be one - followed by multiple option names
● Long options and short options can have Mapping relationship, there may be no
● Long option name is multi-byte, starting with two hyphens (--)
● Between options and actual parameters, you can directly Connections can also be separated by spaces, or you can use equal signs to connect
● However, the short option uses an equal sign to connect values, and the equal sign will be regarded as part of the value (but it is compatible with this in PHP) One point)
● Options are divided into no value, value must be passed, value can be passed (that is, it can be passed or not)
Use in PHP
getopt ( string $options [, array $longopts [, int &$optind ]] ) : array https://www.php.net/manual/zh/function.getopt.php
$options Short parameter character list, parameter characters are followed by : to indicate that values must be passed; parameter characters are followed by :: to indicate optional values; only parameter characters indicate that the parameter (or option) does not accept value passing
$longopts Since long parameters are multi-byte, they must be arrays, otherwise they cannot be separated. Long parameters also follow the above::,: rules
php lacks the support of structures. Compared with the long option configuration of c, it is more concise, but it also lacks the mapping relationship configuration of long and short options.
$shortOpts = "O:Vv::dh"; $longOpts = ["output-document:","version","verbose::", "debug", "help"]; $options = getopt($shortOpts, $longOpts); var_export($options); php getopt.php -Oa.jpg array ( 'O' => 'a.jpg', ) php getopt.php -O=a.jpg array ( 'O' => 'a.jpg', ) php getopt.php -O a.jpg array ( 'O' => 'a.jpg', ) php getopt.php -O=a.jpg -dhV array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, ) php getopt.php -O=a.jpg -dhV -vvv array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, 'v' => 'vv', )
In the above example, my short parameters and long parameters correspond, but there is no data structure to represent their correspondence (there is an option structure in C to manage this correspondence), so we If both are passed, the program will receive both values, and then we can decide which one to use for the short parameter or the long parameter.
php getopt.php -O=a.jpg -dhV -vvv --output-document b.jpg --debug array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, 'v' => 'vv', 'output-document' => 'b.jpg', 'debug' => false, )
Writing like this is not standardized, so try to avoid writing like this.
php getopt.php -O=a.jpg -dhVvvv array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, 'v' => 'vv', ) php getopt.php -O=a.jpg -dhvvvV array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'v' => 'vvV', )
Summarizes the routines used by GNU C command line options. The commands are easier to use. You will not be confused about why the cases of using various tools under Linux are written in "weird" ways.
In C, short options and values are not supported to be connected with the equal sign, but in PHP, it is possible. Please note.
111
Recommended: "PHP Tutorial"
The above is the detailed content of How to parse GNU C-style command line options through getopt in PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
