Table des matières
$argv obtient toutes les listes de paramètres séparés par des espaces
getopt() Récupère les options de la liste des paramètres de ligne de commande
Option longue
Règles du côlon
Interruption du paramètre d'option
Résumé
Maison développement back-end tutoriel php Une brève discussion sur la façon d'obtenir les paramètres de ligne de commande en PHP

Une brève discussion sur la façon d'obtenir les paramètres de ligne de commande en PHP

Jun 24, 2021 pm 07:30 PM
php 命令行参数

Dans la ligne de commande PHP CLI, il est nécessaire de fournir des paramètres pour le script de ligne de commande comme GET et POST sur la page web alors comment obtenir ces paramètres de ligne de commande ? L'article suivant vous montrera comment obtenir les paramètres de ligne de commande en PHP et présentera la variable $argv et la fonction getopt().

Une brève discussion sur la façon d'obtenir les paramètres de ligne de commande en PHP

$argv obtient toutes les listes de paramètres séparés par des espaces

Cette variable est probablement une variable de réception de paramètres qui est utilisée plus souvent . Il s'agit d'une variable fixe préparée par PHP pour nous permettre d'obtenir le tableau de paramètres transmis au script.

print_r($argv);
// php 如何获取PHP命令行参数.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
// Array
// (
//     [0] => 如何获取PHP命令行参数.php
//     [1] => --a=1
//     [2] => -b=2
//     [3] => -c=3
//     [4] => -d=4
//     [5] => --e=5
//     [6] => ccc
//     [7] => ddd
// )
Copier après la connexion

Ce tableau est séparé par des espaces entre les paramètres. Le premier élément est le nom du fichier de script en cours d'exécution. Autrement dit, qu'il y ait ou non des paramètres, cette variable doit avoir un $argv[0] qui représente le nom du fichier de script en cours.

Dans les besoins quotidiens de développement, l'utilisation de cette variable est en fait suffisante. Mais ce n'est évidemment pas notre sujet aujourd'hui. Tout le monde a remarqué que dans le code ci-dessus nous avons de nombreux paramètres sous la forme -x=xxx. Ces paramètres sont-ils très similaires aux options de commande Linux ? Oui, c'est ce sur quoi nous allons nous concentrer ? aujourd'hui : obtenir des options à partir d'une liste d'arguments de ligne de commande.

getopt() Récupère les options de la liste des paramètres de ligne de commande

En fait, c'est une fonction si simple que nous pouvons obtenir la commande spécifiée tout comme les options de commande Linux valeur. Et au lieu d'être séparées par des espaces comme $argv, la fonction d'option de commande encapsulera ces options de commande dans un tableau, formant un tableau avec le nom de l'option comme clé et le contenu après le signe égal comme valeur, ce qui est plus pratique pour nous à utiliser.

// php 如何获取PHP命令行参数.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('a:b:c:d:e:f:'));
// Array
// (
//     [b] => 2
//     [c] => 3
//     [d] => 4
// )
Copier après la connexion

N'est-ce pas étonnant et très intuitif ? On obtient directement le contenu de b, c et d sous la forme de tableaux clé-valeur avec un format très clair. Certains étudiants veulent demander : où sont a et e ? Et ccc et ddd à l'arrière ?

La première chose à noter est que ccc et ddd ne sont pas des paramètres d'option standard, c'est-à-dire que le contenu reçu par cette fonction est l'option commençant par -, donc ccc et ddd ne seront pas affichés ici, et vous devez y prêter attention. Malheureusement, les paramètres non optionnels interrompront l'acquisition des paramètres d'option. Si vous continuez à ajouter des options commençant par - après ccc, vous ne pourrez pas les obtenir. Et qu'en est-il des paramètres d'option commençant par -- ? Regardons directement la fonction d'option longue ci-dessous.

Option longue

// php 如何获取PHP命令行参数.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
//     [a] => 1
//     [e] => 5
// )
Copier après la connexion

Oui, le deuxième paramètre de la fonction getopt() est de définir ce genre d'option longue au début, et il est à noter que , le premier paramètre est de type chaîne et le deuxième paramètre d'option longue est de type tableau. Ensuite, si nous les combinons, nous pouvons bien sûr obtenir toutes les informations sur les paramètres !

// php 如何获取PHP命令行参数.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
//     [a] => 1
//     [b] => 2
//     [c] => 3
//     [d] => 4
//     [e] => 5
// )
Copier après la connexion

OK, il n'y a aucun problème pour obtenir les options des paramètres. Attention, les étudiants doivent avoir découvert un autre problème. Pourquoi y a-t-il deux points après le nom de l'option défini dans le paramètre de la fonction getopt() ? Cela implique nos règles du côlon, veuillez lire directement ci-dessous.

Règles du côlon

Les deux premiers paramètres de getopt() prennent tous deux en charge un ensemble de règles pour l'acquisition d'options :

  • Caractères individuels ( Aucune valeur acceptée)
  • Caractère suivi de deux points (valeur obligatoire pour cette option)
  • Caractère suivi de deux deux points (valeur pour cette option facultative)

Jetons un coup d'œil directement à travers le code.

// 一
// php 如何获取PHP命令行参数.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('abcdef'));
// Array
// (
//     [b] => 
//     [c] => 
//     [d] => 
// )

// 二
// php 如何获取PHP命令行参数.php -f
print_r(getopt('f::'));
// Array
// (
//     [f] => 
// )
print_r(getopt('f:'));
// Array
// (
// )

// 三
// php 如何获取PHP命令行参数.php -f 22
print_r(getopt('f::'));
// Array
// (
//     [f] => 
// )
print_r(getopt('f:'));
// Array
// (
//     [f] => 22
// )

// 四
// php 如何获取PHP命令行参数.php -f=22
print_r(getopt('f::'));
// Array
// (
//     [f] => 22
// )
print_r(getopt('f:'));
// Array
// (
//     [f] => 22
// )
Copier après la connexion

Cette section est assez longue, regardons-la pièce par pièce. Le premier est abcdef sans deux-points. Le tableau renvoyé contient des clés mais aucune valeur. Conformément à la règle ci-dessus, les valeurs de ces options de paramètres ne sont pas acceptées. Lorsque vous transmettez ces options de paramètres, elles n'ont que des noms de clés et un contenu vide.

Le deuxième paragraphe définit un paramètre, mais ne donne pas de valeur. A ce moment, le double deux-points :: aura un nom de clé, tandis que le simple deux-points : n'aura rien.

Le troisième paragraphe est la valeur de l'option sous forme d'espaces. Double deux-points : Il y a un nom de clé mais pas de valeur. Simple deux-points : La valeur de la clé est normale.

Le quatrième paragraphe est la valeur de l'option sous la forme du signe égal =. Les deux-points simples et doubles reçoivent normalement la valeur clé.

Interruption du paramètre d'option

Nous avons mentionné le problème de l'interruption des paramètres ci-dessus, c'est-à-dire que si un paramètre de paramètre non-option apparaît après le paramètre d'option, getopt() Tous le contenu suivant ce paramètre non optionnel ne peut plus être obtenu.

// php 如何获取PHP命令行参数.php -f=22 aa -b=33
// 选项的解析会终止于找到的第一个非选项,之后的任何东西都会被丢弃。
// Array
// (
//     [f] => 22
// )
Copier après la connexion

A travers ce test, il apparaît clairement que cette dernière option b ne peut pas être obtenue. A ce stade, si nous voulons savoir où se trouve le paramètre option ou quel paramètre est interrompu, nous pouvons utiliser le troisième paramètre de la fonction getopt().

// php 如何获取PHP命令行参数.php -f=22 aa -b=33
$optind = null;
getopt('f:b:', [], $optind);
echo $optind, PHP_EOL; // 返回中断位置的索引值,2
echo $argv[$optind], PHP_EOL; // 等同于 $argv 的索引顺序,aa
Copier après la connexion

Le commentaire a été écrit très clairement. Le troisième paramètre rappellera l'index de la position d'interruption de l'option du paramètre, et cet index est cohérent avec la position d'ordre d'index de $argv.

Résumé

Pour être honnête, avant de lire le document, je savais vraiment seulement qu'il existe une variable $argv qui peut être utilisée pour obtenir les paramètres de la commande script de ligne. Grâce à cet apprentissage, j'ai découvert qu'il existe une fonction de paramètre d'option si puissante. Le processus d'apprentissage est très simple. Comment l'appliquer à des projets réels est la clé. Allez, étudiez dur et entraînez-vous dur !

测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.php
Copier après la connexion

推荐学习:《PHP视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Journalisation CakePHP Journalisation CakePHP Sep 10, 2024 pm 05:26 PM

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

See all articles