2012-08-06 55 views
0

我有一個PHP腳本,拉動網頁的元標記信息。 我從CLI使用這個腳本。 我的問題是我如何添加到這個腳本,該腳本接受參數(url)並將其應用到腳本。再次,這將來自命令行界面。拉STDN這個元標記腳本PHP

這是示例腳本。

#!/usr/bin/php 
<?php 

    function getMetaData($url){ 
     // get meta tags 
     $meta=get_meta_tags($url); 
     // store page 
     $page=file_get_contents($url); 
     // find where the title CONTENT begins 
     $titleStart=strpos($page,'<title>')+7; 
     // find how long the title is 
     $titleLength=strpos($page,'</title>')-$titleStart; 
     // extract title from $page 
     $meta['title']=substr($page,$titleStart,$titleLength); 
     // return array of data 
     return $meta; 
    } 

    // This line should be replaced with the function call using argv  
    //$tags = getMetaData('$url'); 

    // Check data was passed 
    if (empty($argv[1])) { 
     exit("You didn't specify a URL!"); 
    } 

    // Pass the supplied data into your code 
    $tags = getMetaData($argv[1]); 


    echo 'Title: '.$tags['title']; 
    echo "\n"; 
    echo 'Description: '.$tags['description']; 
    echo "\n"; 
    echo 'Keywords: '.$tags['keywords']; 

?> 

非常感謝幫助,我是一名php新手。

+0

嗨喬恩,歡迎計算器!請注意,您可以通過簡單縮進4個空格來突出顯示代碼。 – DaveRandom 2012-08-06 21:30:21

回答

1

首先,要直接解決您的問題 - 您可以通過$argv全局變量訪問腳本的命令行參數。

是在全球範圍內註冊的標準的變量,而不是像superglobal$_GET$_POST - 所以,除非你把它作爲一個參數也將無法使用您的功能。

第一個參數將在$argv[1],第二次在$argv[2],等等等等

我們解決了幾個點的約你的腳本:

  • 當從HTML在PHP中提取信息,最好的辦法是用DOM。這是一個適用於PHP的HTML解析器,可讓您執行諸如選擇文檔中的所有<meta>標籤並非常容易地提取其屬性的值。
  • 您的代碼正在下載整個文檔兩次 - 一次在get_meta_tags(),一次在file_get_contents()。這顯然是低效的 - 但是可以通過使用DOM來解決,因爲您只需要創建一次文檔對象。或者,您可以先使用file_get_contents()並將數據保存到臨時文件,然後在該臨時文件上調用get_meta_tags()
  • 腳本中的標記?>可以(通常應該)省略。這可以防止在腳本結尾處意外輸出意外的空白。

編輯

下面是如何使用一個例子:

<?php 

    // Check data was passed 
    if (empty($argv[1])) { 
    exit("You didn't specify a URL!"); 
    } 

    // Pass the supplied data into your code 
    $tags = getMetaData($argv[1]); 

    // ... 
+0

欣賞反饋,但我仍不確定如何編寫適用於此腳本的應用程序。 – Jon 2012-08-06 21:37:37

+0

@Jon請參閱上面的編輯 – DaveRandom 2012-08-06 21:42:41

+0

差不多了,我試圖將它應用到腳本,仍然沒有顯示元信息。對不起,新手在這裏 – Jon 2012-08-06 22:08:32