парсинг HTML с помощью domDocument и DOMXPath

Я получаю этот код в $ HTML переменная:

...
...
<table id="tbvalue" class="table_main">
<tr align="center">
<td>
<div style='background-color:#534522;' ><img src="operation.bmp" border="0" alt="image" width="250" height="60" /></div>
<br />
</td>
</tr>
<tr align="center">
<td class="other">
more text
</td>
</tr>
<tr align="center">
<td>
<input name="name" type="text" id="label" tabindex="1"/>
</td>
</tr>
<tr>
<td>
<span id="lblErrCap" class="errfont"></span>
</td>
</tr>
</table>
...
...

примечание: мне нужно это первое появление <img> это внутри table id="tbvalue"
Я пытался сделать это:

$dom = new domDocument;

/*** load the html into the object ***/
@$dom->loadHTML($html); // the @ is to silence errors and misconfigures of HTML

/*** discard white space ***/
$dom->preserveWhiteSpace = false;
$xpath = new DOMXPath($dom);

$spans = $xpath->query('//img');
echo $spans->item(0)->getAttribute("src");

Но этот запрос не знает таблицы table id="tbvalue" и просто взять первый <img>.

Какой подход получить первым img внутри table id="tbvalue" ?

2

Решение

Сделай это так:

<?php
$xpath = new DOMXPath($dom);
$spans = $xpath->query('//table[@id="tbvalue"]//img[1]');
echo $spans->item(0)->getAttribute("src");

// оператор означает выбор узлов в документе из текущего узла, которые соответствуют выбору, независимо от того, где они находятся

Более полезную информацию вы можете найти Вот.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]