How to pass arguments to a PHP script via command line?

Asked

Viewed 2,087 times

4

I have a script PHP which receives arguments as follows: script.php -f "valor".

  • How do I make PHP pass this argument via command line?

2 answers

6


To take the names and values of the arguments from the command line use $argv

command line:

 php cmd.php -p1 v1 -p2 v2

cmd.php

print_r($argv);

Being that the first item of $argv is the name of the script. The output of cmd.php will be:

Array
(
    [0] => cmd.php
    [1] => -p1
    [2] => v1
    [3] => -p2
    [4] => v2
)

1

You can be using the function getopt() which is nothing more than an abbreviation of "Get Options".

<?php  

    $args = getopt('f:'); // refere-se ao parâmetro "-f"
    print_r($args); // será imprimida e seu retorno será um Array

?>

this function will return an array of options/arguments in the Command Prompt (or any other shell/console)

php script.php -f "hello world"

Array
(
    [f] => ola mundo
)

The opposite of $argv

<?php  
    
    print_r($argv); // obtêm quaisquer argumentos passados (incluindo o próprio arquivo)

?>

php script.php teste1 teste2 teste3

Array
(
    [0] => script.php
    [1] => teste1
    [2] => teste2
    [3] => teste3
)

I suggest that

make use of the getopt() because with it you can pre-define specific parameters, causing it nay return any argument "out of the ordinary" (He gets what you want him to get!). Thus having a control of the content of Array generated.

It is worth mentioning some points where one must respect parameters, as the name already says!
as for example the use of "-f", where to be passed "-ff" as parameter
php script.php -ff "ola mundo"

its result will be an "f" as value and not what was passed after it.

Array 
(
    [f] => f
)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.