我正在使用'PHP Simple HTML DOM Parser'库。
我的代码基本上遍历我的不同网站并列出了我需要的所有相关锚点,我的问题是:如何在"选择器"的锚点中打印href
的第一个值。在$memb(n)
数组中的每个$team
变量中。
这是我的代码:
$memb1 = 'http://www.xyz1.org';
$memb2 = 'http://www.abc3.org';
$memb(n) = '...etc...etc'
$teams = array(
array("url" => $memb1, "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),
array("url" => $memb2, "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),
array("url" => $memb(n), "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),...etc...etc
当像这样运行foreach循环时:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
foreach ($html->find($site["selector"]) as $a) {
$links[] = $a->href;
}
}
?>
<pre>
<?php print_r($links);?>
</pre>
我从所有$memb
变量中得到了我想要的所有选定锚点,但我试图在&#34;选择器&#34的锚点中打印href的第一个值;在$memb(n)
数组中的每个$team
变量中,但我无法找到实现此目的的方法。
我已经尝试了print_r(array_values($links)[0]);
但我只获得$memb1
的第一个锚点,它停在那里,它不会继续打印$memb2
的第一个锚点,依此类推
如何从每个不同的$ memb网站打印第一个锚点(索引0)?
答案 0 :(得分:2)
如果我找到你,那就试试吧:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
foreach ($html->find($site["selector"]) as $a) {
$links[] = $a->href;
break;
}
}
或者,你可以做一点优化:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
$link = $html->find($site["selector"], 0);
if (!empty($link)) $links[] = $link->href;
}
答案 1 :(得分:1)
对调用find()
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
$anchors = $html->find($site["selector"]);
if (!empty($anchors)) {
$links[] = $anchors[0]->href;
}
}