如何用DOMDocument在PHP中高效解析和操作HTML、XML文档?

2026-04-05 15:271阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计447个文字,预计阅读时间需要2分钟。

如何用DOMDocument在PHP中高效解析和操作HTML、XML文档?

PHP中使用DOMDocument处理HTML、XML文档,自PHP5开始,PHP就为我们提供了强大的解析和生成XML相关操作的类——DOMDocument。几乎所有人在爬取网页时都会用到。

PHP中使用DOMDocument来处理HTML、XML文档

其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类。不过我估计大部分人在爬取网页时还是会喜欢用正则去解析网页内容,学了今天的这个类下回就可以尝试下使用这个PHP自带的方式来进行解析分析了。

如何用DOMDocument在PHP中高效解析和操作HTML、XML文档?

解析HTML

// 解析 HTML $baidu = file_get_contents('www.baidu.com'); $doc = new DOMDocument(); @$doc->loadHTML($baidu); // 百度输出框 $inputSearch = $doc->getElementById('kw'); var_dump($inputSearch); // object(DOMElement)#2 // .... echo $inputSearch->getAttribute('name'), PHP_EOL; // wd // 获取所有图片的链接 $allImageLinks = []; $imgs = $doc->getElementsByTagName('img'); foreach($imgs as $img){ $allImageLinks[] = $img->getAttribute('src'); } print_r($allImageLinks); // Array // ( // [0] => //www.baidu.com/img/baidu_jgylogo3.gif // [1] => //www.baidu.com/img/bd_logo.png // [2] => img.558idc.com/uploadfile/allimg/php-1/gs_237f015b.gif // ) // 利用 parse_url 分析链接 foreach($allImageLinks as $link){ print_r(parse_url($link)); } // Array // ( // [host] => www.baidu.com // [path] => /img/baidu_jgylogo3.gif // ) // Array // ( // [host] => www.baidu.com // [path] => /img/bd_logo.png // ) // Array // ( // [scheme] => www.baidu.com'); $doc = new DOMDocument(); @$doc->loadHTML($baidu);

首先是加载文档内容,这个比较好理解,直接使用 loadHTML() 方法加载 HTML 内容。它还提供了其它的几个方法,分别是:load() 从一个文件加载XML;loadXML() 从字符串加载XML;loadHTMLFile() 从文件加载HTML。

// 百度输出框 $inputSearch = $doc->getElementById('kw'); var_dump($inputSearch); // object(DOMElement)#2 // .... echo $inputSearch->getAttribute('name'), PHP_EOL; // wd

接下来我们使用和前端 JS 一样的 DOM 操作API来操作HTML里面的元素。这个例子中就是获取百度的文本框,直接使用 getElementById() 方法获得id为指定内容的 DOMElement 对象。然后就可以获取它的值、属性之类的内容了。

【相关

本文共计447个文字,预计阅读时间需要2分钟。

如何用DOMDocument在PHP中高效解析和操作HTML、XML文档?

PHP中使用DOMDocument处理HTML、XML文档,自PHP5开始,PHP就为我们提供了强大的解析和生成XML相关操作的类——DOMDocument。几乎所有人在爬取网页时都会用到。

PHP中使用DOMDocument来处理HTML、XML文档

其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类。不过我估计大部分人在爬取网页时还是会喜欢用正则去解析网页内容,学了今天的这个类下回就可以尝试下使用这个PHP自带的方式来进行解析分析了。

如何用DOMDocument在PHP中高效解析和操作HTML、XML文档?

解析HTML

// 解析 HTML $baidu = file_get_contents('www.baidu.com'); $doc = new DOMDocument(); @$doc->loadHTML($baidu); // 百度输出框 $inputSearch = $doc->getElementById('kw'); var_dump($inputSearch); // object(DOMElement)#2 // .... echo $inputSearch->getAttribute('name'), PHP_EOL; // wd // 获取所有图片的链接 $allImageLinks = []; $imgs = $doc->getElementsByTagName('img'); foreach($imgs as $img){ $allImageLinks[] = $img->getAttribute('src'); } print_r($allImageLinks); // Array // ( // [0] => //www.baidu.com/img/baidu_jgylogo3.gif // [1] => //www.baidu.com/img/bd_logo.png // [2] => img.558idc.com/uploadfile/allimg/php-1/gs_237f015b.gif // ) // 利用 parse_url 分析链接 foreach($allImageLinks as $link){ print_r(parse_url($link)); } // Array // ( // [host] => www.baidu.com // [path] => /img/baidu_jgylogo3.gif // ) // Array // ( // [host] => www.baidu.com // [path] => /img/bd_logo.png // ) // Array // ( // [scheme] => www.baidu.com'); $doc = new DOMDocument(); @$doc->loadHTML($baidu);

首先是加载文档内容,这个比较好理解,直接使用 loadHTML() 方法加载 HTML 内容。它还提供了其它的几个方法,分别是:load() 从一个文件加载XML;loadXML() 从字符串加载XML;loadHTMLFile() 从文件加载HTML。

// 百度输出框 $inputSearch = $doc->getElementById('kw'); var_dump($inputSearch); // object(DOMElement)#2 // .... echo $inputSearch->getAttribute('name'), PHP_EOL; // wd

接下来我们使用和前端 JS 一样的 DOM 操作API来操作HTML里面的元素。这个例子中就是获取百度的文本框,直接使用 getElementById() 方法获得id为指定内容的 DOMElement 对象。然后就可以获取它的值、属性之类的内容了。

【相关