2012-01-29 99 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; 
}