DOMXPath - Select 只有几个项目
DOMXPath - Select only a few items
假设我们有这个 html 和以下 DOMXPath 代码:
<div>
<div>
<p>1</p>
</div>
<div>
<p>2</p>
</div>
<div>
<p>3</p>
</div>
<div>
<p>4</p>
</div>
<div>
<p>5</p>
</div>
<div>
<p>6</p>
</div>
</div>
$doc = new DOMDocument();
$doc->loadHtml($strhtml);
$doc->preserveWhiteSpace = false;
$xpath = new DOMXPath( $doc );
$nodelist = $xpath->query('//div/div[2]/p');
foreach( $nodelist as $node ) {
$result = $node->nodeValue."\n";
}
echo $result;
显然,$result = '2'
,因为我们从第二个 'div' 节点请求 'p' 的值。
现在,我怎样才能获得例如从“div[2]
”到“div[4]
”的值并将它们相加?
准确地说,我想知道如何获得"from # to #"以及如何获得"this #, that #, also # and #".所以两个问题,针对两个不同的问题。
提前致谢。
您可以 select 元素范围 DOMXPath
:
至于第一个问题得到"from # to #"使用
以下方法:
// select nodes within specified range of positions
$nodelist = $xpath->query('//div/div[position()>1 and position()<5]');
至于第二题得到"this #, that #, also # and #"
尝试以下操作(使用 |
联合运算符):
// extracts the 2nd, 4th and 6th elements respectively
$nodelist = $xpath->query('//div/div[2] | //div/div[4] | //div/div[6]);
假设我们有这个 html 和以下 DOMXPath 代码:
<div>
<div>
<p>1</p>
</div>
<div>
<p>2</p>
</div>
<div>
<p>3</p>
</div>
<div>
<p>4</p>
</div>
<div>
<p>5</p>
</div>
<div>
<p>6</p>
</div>
</div>
$doc = new DOMDocument();
$doc->loadHtml($strhtml);
$doc->preserveWhiteSpace = false;
$xpath = new DOMXPath( $doc );
$nodelist = $xpath->query('//div/div[2]/p');
foreach( $nodelist as $node ) {
$result = $node->nodeValue."\n";
}
echo $result;
显然,$result = '2'
,因为我们从第二个 'div' 节点请求 'p' 的值。
现在,我怎样才能获得例如从“div[2]
”到“div[4]
”的值并将它们相加?
准确地说,我想知道如何获得"from # to #"以及如何获得"this #, that #, also # and #".所以两个问题,针对两个不同的问题。
提前致谢。
您可以 select 元素范围 DOMXPath
:
至于第一个问题得到"from # to #"使用 以下方法:
// select nodes within specified range of positions $nodelist = $xpath->query('//div/div[position()>1 and position()<5]');
至于第二题得到"this #, that #, also # and #" 尝试以下操作(使用
|
联合运算符):// extracts the 2nd, 4th and 6th elements respectively $nodelist = $xpath->query('//div/div[2] | //div/div[4] | //div/div[6]);