パラメータモードPHP CLIを得る方法

二つの方法の受信パラメータでPHPのCLIモード

1. argv配列
2.方法のgetopt


1. argv配列を使用します

PHPを実装する必要があり、三つのパラメータ(タイプ=ニュース、is_hot = 1、限界= 5)を通過:例えば

test.phpを作成

<?PHPの
ますprint_r($ ARGVの); 
?>


コマンドラインを実行します

PHPのtest.phpをニュース1  5

出力:

アレイ
[ 0 ] => test.phpを
[ 1 ] => ニュース
[ 2 ] => 1 
[ 3 ] => 5 

 



[3 ARGV〜[1]のargv [0]現在のphpを実行するファイルの名前であり、およびargv参照 ] パラメータ渡さの値である
[1]型の値に等しいのargv
[2] is_hot値に等しいのargv
[ARGV 3]制限値に等しい
argv配列に応じて、後続の処理操作に渡されたパラメータを取得することができます。

短所:
ARGV配列を使用して、パラメータを渡すことができ、連続的に取得されました。しかし、取得した後、必要に応じた処理を行うために、実施形態[1]は、対応するタイプのパラメータをargvを必要はARGV [2] [3]のパラメータを制限するために、対応するis_hotパラメータ、ARGVに対応します。配信プロセス、パラメータの順序が間違っている場合は、エラーが発生します。

例えば:

<?PHPの
$のPARAM = 配列(); 
$のPARAM [ ' タイプ' ] = $ ARGV [ 1 ]。
$のPARAM [ ' is_hot ' ] = $ ARGV [ 2 ]。
$のPARAM [ ' 限界' ] = $ ARGV [ 3 ]。

しますprint_r($のPARAM)。

 

実行

PHPのtest.phpをニュース1  5 

输出:

配列
    [タイプ] => ニュース
    [is_hot] => 1 
    [リミット] => 5 

 

配信順序が異なる場合、取得したパラメータ値は、後続のプログラムエラーを生じる、異なるであろう

実行

PHP test.phpを1  5つのニュース

输出:

配列
    [タイプ] => 1 
    [is_hot] => 5 
    [リミット] => ニュース

 


したがって、argv配列伝送パラメータを使用する場合、渡されたパラメータの順序に注意してください。


2. getoptの方法


getoptは、コマンドラインパラメータのリストからオプションを取得します

配列のgetopt(文字列 $オプション[、配列$ longoptsの])


パラメータ:
オプションの
各文字の文字列は単一のハイフンのスクリプトに渡されたオプションをマッチング、オプション文字として扱われます( - )初めに()。たとえば、オプション文字列「x」は-xというオプションを認識します。AZ、AZと0-9だけを許可します。

longoptsの
オプションの配列。( - )はスクリプトのオプションに渡されたこの配列の各要素は、2つのハイフンにマッチし、オプション文字列として使用されます。例えば、長いオプション要素「optが」オプション-optを認識します。

:オプションには、以下の要素含まれる
個々の文字(値を受け付けない)
コロンが続く(このオプションは値が必要)
2つの文字のコロン(このオプションのオプション値)に続く
最初の文字列の後にオプションの値をパラメータ。値の前にスペースがあるかどうかは気にしません。

オプションおよびフォーマットが、ほぼ同じであるlongoptsの、唯一の違いは、オプションの配列(オプションとして各元素)であるオプションは、文字列を必要とする、(各文字はオプションである)longoptsの必要性です。
セパレータは、値または=スペースで渡すことができます。
オプションの値は、セパレータ空間として受け入れられていない、唯一=セパレータとして使用することができます。

戻り値
この関数のは失敗のオプション/パラメータ、またはFALSEを返します。
廃棄された後の解析オプションは、最初に見つかった非オプションで何かを終了します。


実施例1のオプション
、B、値cが必要
D任意の値を
eが受け入れられない値です。

<?PHP 
$ PARAM = getoptの(' :B:C:D :: E ' ); 
しますprint_r($のPARAM)。


実行

PHP test.phpを-a 1 -b 2 -C 3 -d = 4 -e 5 

输出:

配列
[A] => 1 
[B] => 2 
[C] => 3 
[D] => 4 
[電子] => 

 

実施例2 longoptsのの
値を必要is_hotタイプ、
制限が選択可能な値がある
値が受け入れられない期限切れ

<?PHPの
$のlongopt = 配列(
 ' タイプ:' ' is_hot:' ' リミット:: ' ' 有効期限が切れ' 
); 
$ PARAM = getoptの('' 、$のlongopt)。
しますprint_r($のPARAM)。

 

実行

PHPのtest.phpをの--typeニュース--is_hot 1 --limit = 10 --expire = 100 

输出:

配列
[タイプ] => ニュース
[is_hot] => 1 
[リミット] => 10 
[期限切れ] => 

 

3.例を無視するの背後にある、最初の非オプションを探します

<?PHPの
$のlongopt = 配列(
 ' タイプ:' ' is_hot:' ' リミット:: ' ' 有効期限が切れ' 
); 
$ PARAM = getoptの('' 、$のlongopt)。
しますprint_r($のPARAM)。


実行

--typeニュース--is_hots test.phpをPHP 1 --limit = 10 --expire = 100 

输出:

配列
[タイプ] => ニュース

 


is_hotsないオプション値なので、ここからスタートした後、引数(定義されたがis_hotである)ので、削除されています。


概要:
使用しARGV配列パラメータ方法は簡単で、実装が容易である渡します。パラメータの順序が間違っていることができない、パラメータは、対応するプロセスを得るために行われる必要があります。
getoptの方法、パラメータ名を使用して、パラメータの順序はかなり標準的な、含まなくてもよいです。(推奨)

おすすめ

転載: www.cnblogs.com/ryanzheng/p/11761179.html