2012-08-13 229 views
2

所以我有這個腳本,我試圖通過命令行傳遞參數。 但是,不能得到它的工作。下面是腳本代碼:通過命令行傳遞參數php

#!/usr/bin/php 

<?php 
$argv[1] = $scraper; 
require_once('Scraper.php'); 
$scraper = new JonH_Scraper(); 

if (empty($argv[1])) { 
    echo 'whats the URL?'; 
    } 

$scraper->scrape($url); 
var_dump($scraper); 
+0

什麼你被它的意思是不工作?是否有錯誤,或只是打印出「Whats the URL」? – andrewsi 2012-08-13 19:43:43

+0

在命令行參數不存在的情況下,您應該「退出」或「死亡」。使用你在這裏輸入的代碼,即使參數爲空,也會調用'$ scraper-> scrape()'。 – 2012-08-13 19:44:45

+0

你會得到什麼錯誤,並檢查你的包含路徑。添加'var_dump($ argv);'並在您的hashbang上設置'-n'標誌,或者...有太多可能導致有趣事情發生的事情...需要更多信息 – 2012-08-13 19:45:23

回答

4

的錯誤是在這裏

$argv[1] = $scraper; 

應該

$scraper = $argv[1]; 

問候

4

我相信問題是這一行:

$argv[1] = $scraper; 

您將$scraper指定爲$argv[1],但$scraper未定義,因此賦值爲空。稍後,檢查$argv[1]是否爲空,它將自NULL以後。

也許應該顛倒?

$scraper = (isset($argv[1])) ? $argv[1] : null; 

if (empty($scraper)) die('No url provided'); 

編輯:你可能想既然你繼續使用不同的變量名,並創建一個新的Scraper對象並將其分配給同一個變量。

1

應該是這樣的:

php script.php <URL> 


#!/usr/bin/php 
<?php 
require_once('Scraper.php'); 
$url = $argv[1]; 
if(empty($url)){ 
die('URL is EMPTY'); 
} 
$scraper = new Scraper(); 
$results = $scraper->scrape($url); 
var_dump($results); 
+0

僅供參考,$ argv [0]是php腳本本身的名稱,argv [1]是在命令行上傳遞的第一個參數。 – drew010 2012-08-13 19:59:52

+0

感謝您看到@ drew010 – Roger 2012-08-13 20:03:43

+0

我還沒有收到任何結果 – Jon 2012-08-13 20:04:30