2012-01-29 60 views
0

我使用簡單的HTML DOM並從網站中提取兩個鏈接。使用函數中創建的變量

function get_links($website) { 
$html = file_get_html($website); 
$img = $html->find('div.entry img',0)->src; 
$url = $html->find('div.entry a',0)->href;} 

如何在運行函數get_links後使用$ img和$ url?

回答

4

您有兩種選擇。首先是要回報他們:

function get_links($website) { 
    $html = file_get_html($website); 
    $img = $html->find('div.entry img',0)->src; 
    $url = $html->find('div.entry a',0)->href; 
    return array('img' => $img, 'url' => $url); 
} 

只能從函數返回一個值,所以你必須做出一個數組。

另一種選擇是通過引用接受參數:

function get_links($website, &$img, &$url) { 
    $html = file_get_html($website); 
    $img = $html->find('div.entry img',0)->src; 
    $url = $html->find('div.entry a',0)->href; 
} 

當你調用該方法,您可以提供兩個值,其中將包含值:

get_links($someurl, $image, $url); 
echo $image; // echoes the image source 
echo $url; // echoes the url 

我預計第一技術(數組)會更簡單。

您還有其他選擇:你可以把$img$url全球。這是一個壞主意。您也可以將get_links定義爲匿名函數,並使用use關鍵字,但我認爲這不太有用。你也可以封裝函數的對象:

class Links { 
    public $url; 
    public $img; 

    function __construct($website) 
     $html = file_get_html($website); 
     $this->img = $html->find('div.entry img',0)->src; 
     $this->url = $html->find('div.entry a',0)->href; 
    } 
} 

// elsewhere 
$links = new Links($someurl); 
$links->img; 
$links->url; 
} 
1

您可以返回他們作爲一個數組:

return array(
    'img' => $img, 
    'url' => $url 
); 
0

有不同的方式:

  • 它們返回到調用者(如數組)
  • 聲明它們的功能之外的不同示波器光學
  • 聲明全球變量

考慮更適合您的目標的解決方案。

0

您的功能只是部分完成。您需要將這些值返回給調用原點以供在那裏使用。當從函數返回多個值時,我更願意將它作爲關聯數組返回。

function get_links($website) { 
    $html = file_get_html($website); 
    $img = $html->find('div.entry img',0)->src; 
    $url = $html->find('div.entry a',0)->href;} 
    $results = array('img' => $img, 'url' => $url); 
    return $results; 
}