Я искал в Интернете и думал, что это сработает, но это не по какой-то причине. Я пытаюсь извлечь гиперссылку, которая отображает только URL из HTML. Я только пытаюсь извлечь URL-адрес в пределах td align = "center". Вот пример HTML-документа, который я пытаюсь извлечь:
<td>
Aug 17
</td>
<td>
FT
</td>
<td align="right">
<a href="site1">Arsenal ruby</a>
</td>
**<td align="center">**
<a href="site2">1-3</a>
</td>
<td><a href="site3">Aston Villa</a></td>
<td style="text-align:right;">60,003</td>
И вот мой PHP-код, чтобы извлечь его из td align = "center":
<?php
//$searchURL = "site";
include 'simple_html_dom.php';
$site = 'website';
$html = file_get_html($site);
$tabledata = array();
// Find all TD tags with "align=center"
foreach($html->find('td[align=center]') as $e)
echo $e->href . '<br>';
?>
Я знаю, что код работает, потому что код может извлечь все, если это просто td в бараках.
Таким образом, вы сами идентифицировали элементы <td>
, но не дошли до следующего уровня вложенности, чтобы захватить href
из элементов <a>
. Вы можете сделать это вот так:
foreach($html->find('td[align=center]') as $e)
echo $e->children(0)->href . '<br>';
Используйте DOM и Xpath:
Выбрать все элементы td в документе
//td
Только если атрибут align равен "center"
//td[@align="center"]
Получите вспомогательные элементы
//td[@align="center"]//a
Получить HREF узлы признак того, что a
элементы
//td[@align="center"]//a/@href
Пример источника:
$html = <<<'HTML'
<td>
FT
</td>
<td align="right">
<a href="site1">Arsenal ruby</a>
</td>
**<td align="center">**
<a href="site2">1-3</a>
</td>
<td><a href="site3">Aston Villa</a></td>
<td style="text-align:right;">60,003</td>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$nodes = $xpath->evaluate('//td[@align="center"]//a/@href');
foreach ($nodes as $node) {
var_dump($node->value);
}
Вы выбрали элемент td. Якорный элемент является дочерним элементом элемента td.
// Find all TD tags with "align=center"
foreach($html->find('td[align=center]') as $e)
echo $e->firstChild()->getAttribute('href') . '<br>';
preg_match
td[align=center] a