DOMXPath::query()函數是PHP中的一個內置函數,用於評估給定的XPath表達式。
用法:
DOMNodeList DOMXPath::query( string $expression, DOMNode $contextnode, bool $registerNodeNS )
參數:此函數接受上述和以下所述的三個參數:
- $expression:它指定要執行的XPath表達式。
- $contextnode (Optional):它指定用於執行相對XPath查詢的可選contextnode。默認情況下,查詢是相對於根元素的。
- $registerNodeNS (Optional):它指定了可選的registerNodeNS以禁用上下文節點的自動注冊。
返回值:此函數返回一個DOMNodeList,其中包含與給定XPath表達式匹配的所有節點。任何不返回節點的表達式都將返回一個空的DOMNodeList。
下麵給出的程序說明了PHP中的DOMXPath::query()函數:
程序1:在此程序中,我們將獲取具有名稱內容的元素的所有元素值。
<?php
// Create a new DOMDocument instance
$document = new DOMDocument();
// Create a XML
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<content>
First
</content>
<content>
Second
</content>
<content>
Third
</content>
</root>
XML;
// Load the XML
$document->loadXML($xml);
// Create a new DOMXPath instance
$xpath = new DOMXPath($document);
// Get the root element
$tbody = $document->getElementsByTagName('root')->item(0);
// Get all the element with name content
$query = '//content';
// Execute the query
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo $entry->nodeValue . "<br>";
}
?>
輸出:
First Second Third
程序2:在此程序中,我們將計算所有名稱為h1的元素。
<?php
// Create a new DOMDocument instance
$document = new DOMDocument();
// Create a XML
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<h1>
Hello
</h1>
<h1>
World
</h1>
<h1>
Foo
</h1>
<h1>
Bar
</h1>
</root>
XML;
// Load the XML
$document->loadXML($xml);
// Create a new DOMXPath instance
$xpath = new DOMXPath($document);
// Get the root element
$tbody = $document->getElementsByTagName('root')->item(0);
// Get all the element with name h1
$query = '//h1';
// Execute the query
$entries = $xpath->query($query);
// Count the number of headings
echo count($entries);
?>
輸出:
4
參考: https://www.php.net/manual/en/domxpath.query.php
相關用法
- PHP DOMXPath registerPhpFunctions()用法及代碼示例
- Node.js urlObject.query用法及代碼示例
- PHP Ds\Set add()用法及代碼示例
- d3.js d3.hsl()用法及代碼示例
- PHP abs()用法及代碼示例
注:本文由純淨天空篩選整理自gurrrung大神的英文原創作品 PHP | DOMXPath query() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。