我正在使用简单的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?
答案 0 :(得分: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 :(得分:1)
您可以将它们作为数组返回:
return array(
'img' => $img,
'url' => $url
);
答案 2 :(得分:0)
有不同的方式:
考虑更符合您目标的解决方案。
答案 3 :(得分: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;
}