简单的PHP HTML DOM 解析器 中文手册 | PHP Simple HTML DOM Parser中文手册
目录
快速入门
Top
$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>';
$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;?
$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
$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');
$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]');?
$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]
匹配包含特定值的指定属性的元素..
$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]');
$es = $html->find('text');
//查找所有的comment (<!--...-->)区块
$es = $html->find('comment');
foreach($html->find('ul') as $ul)?
{
?????? foreach($ul->find('li') as $li)?
?????? {
?????????????//在这里执行操作...
?????? }
}
//在第一个<ul>中查找第一个<li>?
$e = $html->find('ul',?0)->find('li',?0);
如何访问HTML元素的属性?
Top
$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.
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
//列子
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
//或者?
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
方法
描述
Returns the Nth?child object?if?index?is set, otherwise return an?array of children.
Returns the?parent?of element.
Returns the?first child?of element, or?null?if not found.
Returns the?last child?of element, or?null?if not found.
Returns the?next sibling?of element, or?null?if not found.
Returns the?previous sibling?of element, or?null?if not found.
如何储存DOM对象中的内容?
Top
$str = $html->save();
//将DOM树中的内容储存在文件中?
$html->save('result.htm');
$str = $html;
//打印输出!
echo $html;?
如何自定义解析器方法?
Top
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 HTML DOM 解析器 中文手册 | PHP Simple HTML DOM Parser中文手册
热度:927 发布时间:2012-09-14 23:00:49.0
//从一个URL或者文件创建一个DOM对象
//从字符串创建一个DOM对象
//从URL创建一个DOM对象
//从字符串创建一个DOM对象
//创建一个DOM对象
// 查找所有的锚, 返回一个元素对象数组
//查找所有id=foo的元素
在属性过滤器中支持如下运算符:
//在<ul>中查找所有的<li>后代
//查找所有的text区块
//在<ul>中查找所有的<li>
//?获取属性(如果是一个空值属性(例如. checked, selected...这些属性),则返回true或者false)
// 列子
//?Extract?contents from HTML?
//如果你不是很熟悉HTML DOM,那么请点击这个链接查看更多资料...?
你也可以使用骆驼命名法调用.
mixed
$e->children?(?[int $index]?)element
$e->parent?()element
$e->first_child?()element
$e->last_child?()element
$e->next_sibling?()element
$e->prev_sibling?()
//?将DOM树中的内容储存在字符串中
//?将DOM树中的内容储存在字符串中?
//创建一个带有"$element"参数的函数
相关解决方案
- 访问Tomcat的url的时候如何自动调用index.html
- The requested resource (/webtest/servlet/hello.html) is not availabl 帮忙解决解决方法
- JSP 页面乱码 页面起首已设置 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
- html js不运行有关问题
- 办公自动化系统——议程管理(用jsp+servlet+js+html+jdbc)怎样实现
- <html:text>property的有关问题
- 关于<html:text>相关的有关问题
- Struts 1.2 html:form的action和form的action区别,还有如果2个都有执行哪个解决方案
- 简单计算器(html+js),该怎么解决
- HTML 小疑点,哪位高手解决 给哪位高手分
- 嵌入JSP中的CSS显示效果和在 HTML 中的不一样.为什么.该怎么解决
- struts1 中<html:checkbox>标签的value值怎么动态赋值
- 新人求问,J2EE方向,html,css,javascript,vml要学到什么程度?解决思路
- :前台和后台开发有啥区别?还有css、html、ajax、js、jquery都有什么区别
- struts <html:file> 怎么让前面的框消失,先谢过了
- java(simple think in java)解决方法
- Very simple question,该怎么处理
- =Html.TextAreaFor的文本区域大小如何设置
- 正则表达式 提取 html 标签的内容,该如何解决
- @Html.CkEditor,该怎么处理
- string msg = (string)html.ViewData["Message"];该如何处理
- html password editbox 编码有关问题
- @Html.TextBoxFor(a => a.Title 上边有红线,说异常
- 关于伪静态,怎么配置.html
- MVC中,Html.DropDownListFor怎么绑定数据
- 为何FCKeditor会在自动生成<html>标签呢
- MVC 中得 Html.ActionLink 怎么linkText显示图片标记
- <DOCTYPE html. 这个是有什么用?该如何处理
- asp.net C# 将网页变换为.html 格式
- @Html.ActionLink 基础解决办法