2013-04-11 29 views
0

嘗試使用argv變量並且getopt()似乎不起作用。任何人都知道周圍的工作以外全部採用 - 或 - 選擇:php cli:使用argv和getopt不工作

<?php 
$arr[] = "test:"; 
$options = getopt(NULL, $arr); 
echo $options["test"]; 
?> 
上述

簡單的例子,當我運行:

PHP test.php的--test = 「Hello World」 的

的Hello World

PHP test.php的argv的--test = 「Hello World」 的

無輸出,因爲我把一個值沒有 - 或 - 前。

+2

http://php.net/getopt - *「的選項分析將結束在找到的第一個非選項,與其之後的內容將被丟棄。」 * –

+3

是的,我現在要做的,它說通知:「選項的解析將在第一個非選項結束,隨後的任何內容都將被丟棄。」看起來很不方便。仍然期待解決方法。 – Devon

+0

是的,看起來有點短視。特別是由於無法提供功能的輸入。 –

回答

1
function get_opt() { 
    $options = array(); 
    foreach($_SERVER[ "argv" ] as $key => $arg) { 
     if (preg_match('@\-\-(.+)=(.+)@', $arg, $matches)) { 
      $key = $matches[ 1 ]; 
      $value = $matches[ 2 ]; 
      $options[ $key ] = $value; 
     } else if (preg_match("@\-(.)(.)@", $arg, $matches)) { 
      $key = $matches[ 1 ]; 
      $value = $matches[ 2 ]; 
      $options[ $key ] = $value; 
     } 
    } 
    return $options; 
} 
+3

即使您的回答可能是正確的,但添加一點說明也不會損害任何人,並會鼓勵其他用戶加入您的答案。 – nKn

+0

你的代碼對我的例子確實有用,我會給你的,但它不適用於真實的使用。我做了我自己的工作,當我有機會時我會發布它。 – Devon

+0

@Devon對此有何更新? –