Эй, ребята, у меня есть следующая HTML-структура, из которой я пытаюсь получить информацию:
// Product 1
<div class="productName">
<span id="product-name-1">Product Name 1</span>
</div>
<div class="productDetail">
<span class="warehouse">Warehouse 1, ACT</span>
<span class="quantityInStock">25</span>
</div>
// Product 2
<div class="productName">
<span id="product-name-2">Product Name 2</span>
</div>
<div class="productDetail">
<span class="warehouse">Warehouse 2, ACT</span>
<span class="quantityInStock">25</span>
</div>
…
// Product X
<div class="productName">
<span id="product-name-X">Product Name X</span>
</div>
<div class="productDetail">
<span class="warehouse">Warehouse X, ACT</span>
<span class="quantityInStock">25</span>
</div>
У меня нет контроля над исходным html, и, как вы увидите, productName и сопровождающий его productDetail не содержатся внутри общего элемента.
Теперь я использую следующий php-код, чтобы попытаться проанализировать страницу.
$html = new DOMDocument();
$html->loadHtmlFile('product_test.html');
$xPath = new DOMXPath($html);
$domQuery = '//div[@class="productName"]|//div[@class="productDetail"]';
$entries = $xPath->query($domQuery);
foreach ($entries as $entry) {
echo "Detail: " . $entry->nodeValue) . "<br />\n";
}
Что печатает следующее:
Detail: Product Name 1
Detail: Warehouse 1, ACT
Detail: 25
Detail: Product Name 2
Detail: Warehouse 2, ACT
Detail: 25
Detail: Product Name X
Detail: Warehouse X, ACT
Detail: 25
Теперь это близко к тому, что я хочу. Но мне нужно провести некоторую обработку каждого товара, склада и количества, и не могу понять, как разбить его на отдельные группы товаров. Окончательный результат, который я получаю, выглядит примерно так:
Product 1:
Name: Product Name 1
Warehouse: Warehouse 1, ACT
Stock: 25
Product 2:
Name: Product Name 2
Warehouse: Warehouse 2, ACT
Stock: 25
Я не могу просто понять это, и я не могу обернуться вокруг этого DOM, поскольку элементы не совсем работают так же, как стандартный массив.
Если кто-то может помочь или направить меня в правильном направлении, я всегда буду благодарен.