PHP - DOM 解析器示例


PHP 的 DOM 扩展具有广泛的功能,我们可以使用它们对 XML HTML 文档执行各种操作。我们可以动态构造一个 DOM 对象,从 HTML 文件加载 DOM 文档,或者使用 HTML 标签树加载一个字符串。我们还可以将 DOM 文档保存到 XML 文件,或从 XML 文档中提取 DOM 树。

DOMDocument 类是 DOM 扩展中定义的最重要的类之一。


$obj = new DOMDocument($version = "1.0", $encoding = "")

它表示整个 HTMLXML 文档;用作文档树的根。DOMDocument 类包括许多静态方法的定义,其中一些方法在这里介绍 -

方法 描述
createElement 创建新元素节点
createAttribute 创建新属性
createTextNode 创建新文本节点
getElementById 搜索具有特定 ID 的元素
getElementsByTagName 搜索具有给定本地标记名称的所有元素
load 从文件加载 XML
loadHTML 从字符串加载 HTML
loadHTMLFile 从文件加载 HTML
loadXML 从字符串加载 XML
save 将内部 XML 树转储回文件中
saveHTML 使用 HTML 格式将内部文档转储为字符串
saveHTMLFile 使用 HTML 格式将内部文档转储到文件中
saveXML 将内部 XML 树转储回字符串

例子

让我们使用以下 HTML 文件作为此示例 -


<html>
<head> 
   <title>qikepu.com</title>
</head> 
<body> 
   <h2>课程详情</h2> 
   <table border = "0"> 
      <tbody> 
         <tr> 
            <td>Android</td> 
            <td>Gopal</td> 
            <td>Sairam</td> 
         </tr>
         <tr> 
            <td>Hadoop</td> 
            <td>Gopal</td> 
            <td>Satish</td> 
         </tr> 
         <tr> 
            <td>HTML</td> 
            <td>Gopal</td> 
            <td>Raju</td> 
         </tr> 
         <tr> 
            <td>Web 科技</td> 
            <td>Gopal</td> 
            <td>Javed</td> 
         </tr> 
         <tr> 
            <td>Graphic</td> 
            <td>Gopal</td> 
            <td>Satish</td> 
         </tr> 
         <tr> 
            <td>Writer</td> 
            <td>Kiran</td> 
            <td>Amith</td> 
         </tr> 
         <tr> 
            <td>Writer</td> 
            <td>Kiran</td> 
            <td>Vineeth</td> 
         </tr> 
      </tbody> 
   </table> 
</body> 
</html>

现在,我们将通过调用以下 PHP 代码中的 loadHTMLFile()方法,从上述HTML文件中提取文档对象模型-


<?php 

   /*** 一个新的dom对象 ***/ 
   $dom = new domDocument; 

   /*** 将html加载到对象中 ***/ 
   $dom->loadHTMLFile("hello.php");

   /*** 丢弃空白 ***/ 
   $dom->preserveWhiteSpace = false; 

   /*** 按标签名显示表 ***/ 
   $tables = $dom->getElementsByTagName('table'); 
   
   /*** 使用 iterator_to_array() 函数转换为数组***/ 
   $tables = iterator_to_array($tables);
   
   /*** 从表中获取所有行 ***/ 
   $rows = $tables[0]->getElementsByTagName('tr'); 

   /*** 遍历表行 ***/ 
   foreach ($rows as $row) {
   
      /*** 按标签名称获取每一列 ***/ 
      $cols = $row->getElementsByTagName('td'); 

      /*** 呼应这些值 ***/ 
      echo 'Designation: '.$cols->item(0)->nodeValue.'<br />'; 
      echo 'Manager: '.$cols->item(1)->nodeValue.'<br />'; 
      echo 'Team: '.$cols->item(2)->nodeValue; 
      echo '<hr />'; 
   }
   
?>

将产生以下输出 -

php dom parser 示例