Reputation: 1554
I am using the 'PHP Simple HTML DOM Parser' library.
My code basically loops through my different sites and lists all the relevant anchors I need, my question is: how do I print the 1st value of the href
in the anchor of the "selector" in each of the $memb(n)
variables in the array of $team
.
This is my code:
$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
When running the foreach loop like this:
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>
I get all the selected anchors I wanted from all the $memb
variables all together, yet i'm trying to print the 1st value of the href in the anchor of the "selector" in each of the $memb(n)
variables in the array of $team
, yet I can't find a way to do this.
I already tried print_r(array_values($links)[0]);
yet I get only the 1st anchor from $memb1
and it stops there, it doesn't continue to print the first anchor of $memb2
and so on.
How can I print the 1st anchor (index 0) from every different $memb site?
Upvotes: 1
Views: 59
Reputation: 3415
If I get you right, than try this:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
foreach ($html->find($site["selector"]) as $a) {
$links[] = $a->href;
break;
}
}
or, you can do it a little bit optimized:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
$link = $html->find($site["selector"], 0);
if (!empty($link)) $links[] = $link->href;
}
Upvotes: 2
Reputation: 781088
Use an array index on the result of calling 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;
}
}
Upvotes: 1