2014
May
20




如果你有用 PHP 來寫一些 script 指令,那麼一定會遇到參數傳送給 PHP 的問題,假設今天我要寫一個程式,將 PHP 原始碼的註解刪除,並且將結果轉存到另一個資料夾,這時你可能會這樣寫:

php removeComments.php ./src ./result

用上面的參數傳遞會有一個很嚴重的問題,就是使用的人看不懂 ./src 代表什麼,而 ./result 又代表什麼。

我寫了一個簡單的程式,將參數轉換成一個容易閱讀的方式,如下。

php removeComments.php --source=./src --destination=./result
arguments
  1. <?php
  2. function arguments($argv) {
  3. $ARG = array();
  4. $n = count($argv);
  5. for ($i = 0; $i < $n ; $i++) {
  6. $val = $argv[$i];
  7. if (preg_match('/^[-]{1,2}([^=]+)=[s]*([^s]+)/', $val, $match)) {
  8. $ARG[$match[1]] = $match[2];
  9. } else if (preg_match('/^[-]{1,2}([^=s]+)$/', $val, $match)) {
  10. $i++;
  11. $ARG[$match[1]] = $argv[$i];
  12. }
  13. }
  14. return $ARG;
  15. }
  16.  
  17. $argv = arguments($_SERVER['argv']);
  18. print_r($argv);
  19. /*
  20. array(
  21. "source" => "./src",
  22. "destination" => "../result"
  23. )
  24. */

除了上述範例中使用 「--」開頭,「 =」來指定參數外 ,還支援空白的方式傳遞參數:

php removeComments.php --source src --destination result

回應 (Leave a comment)