4

PHP コマンド ラインでは、最初の引数のみを読み取ることができます。サイト名を追加すると、パスワード入力の前にプログラムが壊れません。

echo "Site name: ";
$handle = fopen ("php://stdin","r");
$base_name = trim(fgets($handle));
fclose($handle);

echo "Password:";
$handle = fopen ("php://stdin","r");
$base_password = trim(fgets($handle));
fclose($handle);

stdin からこれら 2 つの変数を読み取るにはどうすればよいですか?

4

2 に答える 2

1

コマンド時に渡される引数は、呼び出されたコマンドである スーパーグローバルと$argv同様にグローバルになります。$_SERVER["argv"]$argv[0]$_SERVER["argv"][0]

たとえば、呼び出しを解析するための便利な関数./myscript.php --user=root --password=foobar

function parse_argvs(){
    if( $params = $_SERVER["argv"] ){
        $file = array_shift( $params );
        while( $params ){
            $param = array_shift( $params );
            switch( strspn( $param, "-" ) ){
                case( 1 ):
                    $OPTS[ trim( $param, " -" ) ] = array_shift( $params );
                break;
                case( 2 ):
                    list( $key, $value ) = explode( "=", $param );
                    $OPTS[ trim( $key, " -" ) ] = $value;
                break;
                default:
                    $OPTS[ $param ] = true;
                break;
            }
        }
    }
    return $OPTS ?: array();
}

のようなものと呼ばれる

$parsed = parse_argvs();
echo $parsed['user']; //root
echo $parsed['password']; //password

これらは、呼び出し時に渡される実際のコマンドライン引数です。これがお役に立てば幸いです。

于 2012-12-13T19:30:37.293 に答える
0

Try this:

$base_name     = readline("Site Name: ");
$base_password = readline("Password: ");

PHP Readline Function

于 2012-12-13T19:12:14.783 に答える