2012-08-13 238 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