Как указывает @rickdenhaan, getElementById
всегда возвращает один элемент, который является первым элементом, который имеет конкретное значение id
.Однако вы можете использовать DOMXPath
, чтобы найти все узлы с заданным значением id
, а затем выбрать тот, который вам нужен (в этом коде он найдет второй):
$url = 'myurl';
$contents = file_get_contents($url);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);
$count = 0;
foreach ($xpath->query("//*[@id='hours']") as $node) {
if ($count == 1) echo $node->nodeValue;
$count++;
}
Как отмечает @NigelRen в комментариях, вы можете еще больше упростить это, непосредственно выбрав второй вход в XPath, т.е.
$node = $xpath->query("(//*[@id='hours'])[2]")[0];
echo $node->nodeValue;
Демонстрация на 3v4l.org