使用 domDocument 和 DOMXPath 解析 HTML
parsing HTML with domDocument and 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>
...
...
注意:我需要在 table id="tbvalue"
中第一次出现 <img>
我正在尝试这样做:
$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 table id="tbvalue"
并且只会取第一个 <img>
.
在table id="tbvalue"
里面得到第一个img
的方法是什么?
这样做:
<?php
$xpath = new DOMXPath($dom);
$spans = $xpath->query('//table[@id="tbvalue"]//img[1]');
echo $spans->item(0)->getAttribute("src");
//
运算符意味着 select 从当前节点匹配 selection 的文档中的节点,无论它们在哪里
您可以找到更多有用的信息 here。
我正在将此代码放入 $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>
...
...
注意:我需要在 table id="tbvalue"
中第一次出现 <img>
我正在尝试这样做:
$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 table id="tbvalue"
并且只会取第一个 <img>
.
在table id="tbvalue"
里面得到第一个img
的方法是什么?
这样做:
<?php
$xpath = new DOMXPath($dom);
$spans = $xpath->query('//table[@id="tbvalue"]//img[1]');
echo $spans->item(0)->getAttribute("src");
//
运算符意味着 select 从当前节点匹配 selection 的文档中的节点,无论它们在哪里
您可以找到更多有用的信息 here。