`
wangshaofei
  • 浏览: 283692 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单的PHP HTML DOM 解析器 中文手册 | PHP Simple HTML DOM Parser中文手册

    博客分类:
  • php
阅读更多

简单的PHP HTML DOM 解析器 中文手册 | PHP Simple HTML DOM Parser中文手册

目录

快速入门

Top
//从一个URL或者文件创建一个DOM对象
$html = file_get_html('http://www.google.cn/');

// 寻找所有的img标签 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

// 寻找所有的链接标签
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';
//从字符串创建一个DOM对象
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

$html->find('div', 1)->class = 'bar';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html; // 输出: <div id="hello">foo</div><div id="world" class="bar">World</div>

// 从HTML中提取内容(不包含标签)
echo file_get_html('http://www.google.com/')->plaintext

//从URL创建一个DOM对象
$html = file_get_html('http://slashdot.org/');

// 寻找所有的article块
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title'0)->plaintext;
    $item['intro']    = $article->find('div.intro'0)->plaintext;
    $item['details'] = $article->find('div.details'0)->plaintext;
    $articles[] = $item;
}

print_r($articles);

如何创建HTML DOM 对象?

Top
//从字符串创建一个DOM对象
$html = str_get_html('<html><body>Hello!</body></html>');

//从一个URL创建一个DOM对象
$html = file_get_html('http://www.google.com/');

//从一个HTML文件创建一个DOM对象
$html = file_get_html('test.htm');
//创建一个DOM对象
$html = new simple_html_dom();

//从字符串中载入HTML
$html->load('<html><body>Hello!</body></html>');

//从URL中载入HTML 
$html->load_file('http://www.google.cn/');

//从文件中载入HTML 
$html->load_file('test.htm'); 
//输出 
echo $html;

如何查找HTML元素?

Top
// 查找所有的, 返回一个元素对象数组
$ret = $html->find('a');

//查找第N个 , 返回元素对象或者当找不到时返回null (从零开始)
$ret = $html->find('a', 0);

//查找最后一个 , 返回元素对象或者当找不到时返回null (从零开始)
$ret = $html->find('a', -1); 

//通过id属性 查找所有的<div>
$ret = $html->find('div[id]');

// 查找所有属性id=foo<div>标签
$ret = $html->find('div[id=foo]'); 
//查找所有id=foo的元素
$ret = $html->find('#foo');

//查找所有class=foo的元素
$ret = $html->find('.foo');

//查找所有包含id属性的的元素
$ret = $html->find('*[id]'); 

//查找所有的锚与图片
$ret = $html->find('a, img'); 

//查找所有包含title属性的锚与图片
$ret = $html->find('a[title], img[title]');
在属性过滤器中支持如下运算符:

过滤器 描述
[属性] 匹配包含指定属性的元素.
[!属性] 匹配包含指定属性的元素.
[属性=value] 匹配等于特定值的指定属性的元素.
[属性!=value] 匹配除包含特定值的指定属性之外的元素
[属性^=value] 匹配包含特定前缀的值的指定属性的元素.
[属性$=value] 匹配包含特定后缀的值的指定属性的元素.
[属性*=value] 匹配包含特定值的指定属性的元素..
//在<ul>中查找所有的<li>后代
$es = $html->find('ul li');

//查找所有的<div>嵌套标签
$es = $html->find('div div div'); 

//在<table>中查找所有的class=hello的<td>后代 
$es = $html->find('table.hello td');

//在table标签中查找所有属性align=center的td
$es = $html->find(''table td[align=center]');
//查找所有的text区块
$es = $html->find('text');

//查找所有的comment (<!--...-->)区块
$es = $html->find('comment');
//在<ul>中查找所有的<li>
foreach($html->find('ul') as $ul) 
{
       foreach($ul->find('li') as $li) 
       {
             //在这里执行操作...
       }
}

//在第一个<ul>中查找第一个<li> 
$e = $html->find('ul', 0)->find('li', 0);

如何访问HTML元素的属性?

Top
// 获取属性(如果是一个空值属性(例如. checked, selected...这些属性),则返回true或者false)
$value = $e->href;

// 设置属性(如果是一个空值属性(例如. checked, selected...这些属性),则让值等于true或者false)
$e->href = 'my link';

// 删除属性,让其值为空! 
$e->href = null;

// 确定某个属性是否存在? 
if(isset($e->href)) 
        echo 'href exist!';
// 列子
$html = str_get_html("<div>foo <b>bar</b></div>"); 
$e = $html->find("div"0);

echo $e->tag// 返回: " div"
echo $e->outertext// 返回: " <div>foo <b>bar</b></div>"
echo $e->innertext// 返回: " foo <b>bar</b>"
echo $e->plaintext// 返回: " foo bar"

属性名 用法
$e->tag Read or write the tag name of element.
$e->outertext Read or write the outer HTML text of element.
$e->innertext Read or write the inner HTML text of element.
$e->plaintext Read or write the plain text of element.
// Extract contents from HTML 
echo $html->plaintext;

// Wrap a element
$e->outertext = '<div class="wrap">' . $e->outertext . '<div>';

// Remove a element, set it's outertext as an empty string 
$e->outertext = '';

// Append a element
$e->outertext = $e->outertext . '<div>foo<div>';

// Insert a element
$e->outertext = '<div>foo<div>' . $e->outertext;

如何遍历DOM树?

Top
//如果你不是很熟悉HTML DOM,那么请点击这个链接查看更多资料... 

//列子
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
//或者 
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
你也可以使用骆驼命名法调用.
方法 描述
mixed
$e->children ( [int $index] )
Returns the Nth child object if index is set, otherwise return an array of children.
element
$e->parent ()
Returns the parent of element.
element
$e->first_child ()
Returns the first child of element, or null if not found.
element
$e->last_child ()
Returns the last child of element, or null if not found.
element
$e->next_sibling ()
Returns the next sibling of element, or null if not found.
element
$e->prev_sibling ()
Returns the previous sibling of element, or null if not found.

如何储存DOM对象中的内容?

Top
// 将DOM树中的内容储存在字符串中
$str = $html->save();

//将DOM树中的内容储存在文件中 
$html->save('result.htm');
// 将DOM树中的内容储存在字符串中 
$str = $html;

//打印输出!
echo $html; 

如何自定义解析器方法?

Top
//创建一个带有"$element"参数的函数
function my_callback($element) {
        //隐藏所有的<b>标签
        if ($element->tag=='b')
                $element->outertext = '';


//用它的函数名注册callback函数
$html->set_callback('my_callback');

//当输出时就会引用Callback函数
echo $html;

作者: S.C. Chen (me578022@gmail.com)
本程序创意来自Jose Solorzano的HTML Parser for PHP 4
贡献者: Yousuke Kumakura, Vadim Voituk, Antcs
中文手册翻译:蜗牛 
指正翻译中的错误,以及该程序的讨论地址:蜗牛的牛窝
ComSing 开发者之家

分享到:
评论

相关推荐

    PHP Simple HTML DOM Parser 中文手册

    simple_html_dom中文解析手册

    php-simple-html-dom-parser, PHP简单的HTML DOM解析器适应 Composer 和 PSR 0.zip

    php-simple-html-dom-parser, PHP简单的HTML DOM解析器适应 Composer 和 PSR 0 php-simple-html-dom-parser版本 1.5.2针对 Composer 和 PSR-0的自适应:用PHP5 编写的HTML解析器允许你以非常简单的方式操作 HTML !...

    DOMParser解析xml

    对于这种情况,可以考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等基于事件的解析器,它们不需要一次性加载整个文档到内存。 6. **应用场景**: - 数据交换:XML常用于跨平台、跨语言的数据...

    PHP Simple HTML DOM解析器使用入门

    ### PHP Simple HTML DOM 解析器使用入门 #### 一、简介 在Web开发领域,解析HTML文档是一项常见的任务。PHP Simple HTML DOM Parser是一款强大的库,它简化了这一过程,使得开发者能够更加高效地处理HTML文档。该...

    Laravel开发-php-simple-html-dom-parser

    而"php-simple-html-dom-parser"是一个PHP库,专门用于处理和解析HTML文档,它提供了类似jQuery的API,使得操作HTML文档变得简单直观。这个包的Laravel版本则将这个强大的解析器集成到Laravel框架中,让开发者可以更...

    simple_html_dom,php下的html文件DOM解析库

    PHP Simple HTML DOM Parser是一个轻量级且易于使用的库,它允许开发者像操作DOM对象一样方便地处理HTML文档,同时也支持jQuery风格的选择器,使得对HTML元素的操作更加直观。本文将详细讲解这个库的核心概念、功能...

    PHP解析 Simple HTML DOM Parser类

    高效快速分析和获取HTML内容,对抓取过来的内容进行分析和特定内容提取很方便

    simplehtmldom:这是简单HTML DOM解析器的镜像,网址为

    PHP简单HTML DOM解析器 simplehtmldom是用于PHP的快速可靠HTML DOM解析器。 主要特征 纯粹基于PHP的DOM解析器(无需XML扩展名)。 适用于格式正确且已损坏HTML文档。 加载网页,本地文件和文档字符串。 支持CSS...

    Laravel开发-laravel-html-dom-parser

    在本文中,我们将深入探讨如何在 Laravel 框架中使用 `laravel-html-dom-parser` 包,这是一个基于 PHP Simple HTML DOM Parser 的 Laravel 封装,用于解析和操作 HTML 文档。通过理解这个包,开发者可以更高效地...

    simple_html_dom 1.8.1

    一直以来使用php解析html文档树都是一个难题。Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题。可以通过这个php类来解析html文档,对其中的html元素进行操作 (PHP5+以上版本)。

    html-parser:php html解析器,类似与PHP Simple HTML DOM Parser,但是比它快好几倍

    HtmlParser php html解析工具,类似与PHP Simple HTML DOM Parser。由于基于php模块dom,所以在解析html时的效率比PHP Simple HTML DOM Parser快好几倍。注意:html代码必须是utf-8编码字符,如果不是请转成utf-8...

    php解析html类库simple_html_dom(详细介绍)

    一直以来使用php解析html文档树都是一个难题。Simple HTML DOM parser 帮我们很好地解决了这个问题。可以通过这个php类来解析html文档,对其中的html元素进行操作 (PHP5+以上版本)

    simple_html_dom下载和使用

    Simple HTML DOM 是一个 PHP 库,用于解析和操作 HTML 文档。它提供了一种简单而直观的方式来处理 HTML 内容,使得开发者能够轻松地抓取网页数据、修改 HTML 结构等。本篇文章将详细介绍如何下载 Simple HTML DOM ...

    simplehtmldom_1_9_1.zip

    PHP Simple HTML DOM Parser - v1.9.1 - 2019-10-21 https://sourceforge.net/projects/simplehtmldom/ PHP处理html简单好工具

    dom解析xml的demo

    在JavaScript中,我们可以使用`DOMParser`对象的`parseFromString()`方法,或者在Java中使用`DocumentBuilderFactory`和`DocumentBuilder`来实现。 2. **构建DOM树**:解析器读取XML文档并生成DOM树。在这个过程中...

    PHP解析HTML代码库

    对于初学者,`DOMDocument`和`PHP Simple HTML DOM Parser`可能是最好的起点,而对更复杂的任务,如HTML5解析或XSS防护,其他库如Gumbo和HTMLPurifier可能更为合适。在实践中,开发者应根据项目的具体需求和资源限制...

    PHP中使用DOM

    此外,标签“源码”和“工具”暗示了这个话题可能包含一些实用的代码示例和可能的工具库,如PHP的DOM扩展,或者是帮助简化DOM操作的第三方库,如PHP Simple HTML DOM Parser。这些工具可以简化对HTML文档的处理,...

    ios-XML的DOM解析方式.zip

    此外,对于大数据量的XML文件,DOM解析可能会消耗大量内存,这时可以考虑使用SAX(Simple API for XML)解析方式,它是基于事件驱动的,只在需要时处理数据,更适合处理大型XML文档。但本示例主要关注DOM解析方法,...

    微信小程序解析xml的js

    可以考虑使用SAX(Simple API for XML)或其他流式解析器,它们按需解析XML,更适合处理大文件。 总结,微信小程序在处理XML数据时,需要依赖第三方库如`dom-parser.js`或`dom.js`。理解XML、DOM和解析库的使用是...

    XML_DOM_SAX.rar_ XML_DOM_SAX_c# sax_dom解析xml_xml parser csharp_x

    在C#中处理XML时,有两种主要的解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构来表示XML文档,允许...

Global site tag (gtag.js) - Google Analytics