Учитывая последовательность элементов вида
<td class="name">Product Name</td>
<td class="price">$10.00</td>
, можно использовать domdocument () для анализа страницы, содержащей, скажем, 100 пар имя / цена в группу из 100 имен и отдельную группу из100 цен.Однако, если одна из цен отсутствует, вы получаете группу из 100 имен и группу из 99 цен, и неясно, какой продукт не имеет свою цену.
Использование регулярного выражения для анализа пар имени/ Данные о цене (делая цену необязательной) позволяют определить, какому товару не хватает цены, в результате получается 100 пар, одна из которых имеет пустое значение цены.Есть ли какой-нибудь способ добиться этого с помощью domdocument (), так что нет необходимости использовать регулярное выражение для анализа html?
РЕДАКТИРОВАТЬ: я попробовал предложение dqhendricks, но я получаю синтаксическую ошибку в цикле foreachследующие
<?php
$html = <<<EOT
<table>
<tr>
<td class="productname">a</td>
<td class="price">1</td>
</tr>
<tr>
<td class="productname">b</td>
<td class="price">2</td>
</tr>
<tr>
<td class="productname">c</td>
<td class="price">3</td>
</tr>
<tr>
<td class="productname">d</td>
<td class="price">4</td>
</tr>
<tr>
<td class="productname">e</td>
<td class="price">5</td>
</tr>
</table>
EOT;
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadhtml($html);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//table/tr/') as $node) {
$name = $node->query('td[@class="productname"]');
$price= $node->query('td[@class="price"]');
}
print_r($node);
?>