PHP与DOMXPath-如何从这个html树中选择和计数
我需要数一数这些项目中有多少是开放的,有四种类型:简单、中等、困难和不想要。所有这些类型都是div中的值。我需要从计数中排除“不需要”类型。请注意,“打开”和“关闭”值周围有不同数量的空格。这是html结构:PHP与DOMXPath-如何从这个html树中选择和计数,php,domxpath,Php,Domxpath,我需要数一数这些项目中有多少是开放的,有四种类型:简单、中等、困难和不想要。所有这些类型都是div中的值。我需要从计数中排除“不需要”类型。请注意,“打开”和“关闭”值周围有不同数量的空格。这是html结构: <table> <tbody> <tr> <td> <div>Difficult</div> </td>
<table>
<tbody>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Closed </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td>Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td> Closed</td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td>Closed </td>
</tr>
<tr>
<td>
<div>Not-wanted</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td>Open</td>
</tr>
............
我对DOMXPath有非常基本的了解,所以它对我来说太复杂了,因为我只能创建简单的查询
有人能帮忙吗
提前感谢。基于示例中的数据,我认为您可以将xpath表达式调整为此,以获得所有符合您的条件的
:
//table/tbody/tr[normalize space(td[3]/text())=“Open”和
td[1]/div/text()!=“不需要”]
$elements
则为类型,然后可以获取length
属性以获取列表中的节点数
例如:
$source = <<<SOURCE
<table>
<tbody>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Closed </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td>Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td> Closed</td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td>Closed </td>
</tr>
<tr>
<td>
<div>Not-wanted</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td>Open</td>
</tr>
</tbody>
</table>
SOURCE;
$doc = new DOMDocument();
$doc->loadHTML($source);
$doc->preserveWhiteSpace = false;
$xpath = new DOMXPath($doc);
$elements = $xpath->query("//table/tbody/tr[normalize-space(td[3]/text()) = 'Open' and td[1]/div/text() != 'Not-wanted']");
echo $elements->length;
$source=query(“//table/tbody/tr[normalize space(td[3]/text())='Open'和td[1]/div/text()!='Not wanted']);
echo$元素->长度;
这将导致:
五,
根据示例中的数据,我认为您可以将xpath表达式调整为此,以获得所有符合您的条件的
:
//table/tbody/tr[normalize space(td[3]/text())=“Open”和
td[1]/div/text()!=“不需要”]
$elements
则为类型,然后可以获取length
属性以获取列表中的节点数
例如:
$source = <<<SOURCE
<table>
<tbody>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Closed </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td>Open </td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Medium</div>
</td>
<td>Name</td>
<td> Closed</td>
</tr>
<tr>
<td>
<div>Easy</div>
</td>
<td>Name</td>
<td>Closed </td>
</tr>
<tr>
<td>
<div>Not-wanted</div>
</td>
<td>Name</td>
<td> Open </td>
</tr>
<tr>
<td>
<div>Difficult</div>
</td>
<td>Name</td>
<td>Open</td>
</tr>
</tbody>
</table>
SOURCE;
$doc = new DOMDocument();
$doc->loadHTML($source);
$doc->preserveWhiteSpace = false;
$xpath = new DOMXPath($doc);
$elements = $xpath->query("//table/tbody/tr[normalize-space(td[3]/text()) = 'Open' and td[1]/div/text() != 'Not-wanted']");
echo $elements->length;
$source=query(“//table/tbody/tr[normalize space(td[3]/text())='Open'和td[1]/div/text()!='Not wanted']);
echo$元素->长度;
这将导致:
五,