基于simple_html_dom的使用小结


Posted in PHP onJuly 01, 2013
<P>简单范例
<?phpinclude "simple_html_dom.php" ;    //加载simple_html_dom.php文件
$html = file_get_html('http://www.google.com/');  //获取html$dom = new simple_html_dom();    //new simple_html_dom对象$dom->load($html)      //加载html// Find all images foreach($dom->find('img') as $element) {   //获取img标签数组       echo $element->src . '<br>';    //获取每个img标签中的src}// Find all links foreach($dom->find('a') as $element){    //获取a标签的数组       echo $element->href . '<br>';    //获取每个a标签中的href}</P><P>
$html = file_get_html('http://slashdot.org/');   //获取html$dom = new simple_html_dom();    //new simple_html_dom对象$dom->load($html);     //加载html// Find all article blocksforeach($dom->find('div.article') as $article) {       $item['title']     = $article->find('div.title', 0)->plaintext; //plaintext 获取纯文本    $item['intro']    = $article->find('div.intro', 0)->plaintext;    $item['details'] = $article->find('div.details', 0)->plaintext;    $articles[] = $item;}print_r($articles);</P><P>}</P><P>
// Create DOM from string</P><P>$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');
$dom = new simple_html_dom();     //new simple_html_dom对象</P><P>$dom->load($html);      //加载html
$dom->find('div', 1)->class = 'bar';    //class = 赋值 给第二个div的class赋值</P><P>$dom->find('div[id=hello]', 0)->innertext = 'foo';   //innertext内部文本</P><P>echo $dom; </P><P>// Output: <div id="hello">foo</div><div id="world" class="bar">World</div></P><P> </P><P>DOM methods & properties 
Name Description 
void __construct ( [string $filename] ) 构造函数,将文件名参数将自动加载内容,无论是文本或文件/ url。 
 string plaintext 纯文本 
void clear () 清理内存 
void load ( string $content ) 加载内容 
string save ( [string $filename] ) Dumps the internal DOM tree back into a string. If the $filename is set, result string will save to file. 
void load_file ( string $filename ) Load contents from a from a file or a URL. 
void set_callback ( string $function_name ) 设置一个回调函数。 
mixed find ( string $selector [, int $index] ) 找到元素的CSS选择器。返回第n个元素对象如果索引设置,否则返回一个数组对象。 </P>
<P> 4.find 方法详细介绍</P><P>
find ( string $selector [, int $index] ) 
// Find all anchors, returns a array of element objects a标签数组
$ret = $html->find('a');</P><P>// Find (N)th anchor, returns element object or null if not found (zero based)第一个a标签
$ret = $html->find('a', 0);</P><P>// Find lastest anchor, returns element object or null if not found (zero based)最后一个a标签
$ret = $html->find('a', -1); </P><P>// Find all <div> with the id attribute 
$ret = $html->find('div[id]');</P><P>// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]'); </P><P>
// Find all element which id=foo
$ret = $html->find('#foo');</P><P>// Find all element which class=foo
$ret = $html->find('.foo');</P><P>// Find all element has attribute id
$ret = $html->find('*[id]'); </P><P>// Find all anchors and images a标签与img标签数组 
$ret = $html->find('a, img');  </P><P>// Find all anchors and images with the "title" attribute
$ret = $html->find('a[title], img[title]');</P><P>
// Find all <li> in <ul> 
$es = $html->find('ul li'); ul标签下的li标签数组</P><P>// Find Nested <div> tags
$es = $html->find('div div div');  div标签下div标签下div标签数组</P><P>// Find all <td> in <table> which class=hello 
$es = $html->find('table.hello td'); table标签下td标签数组</P><P>// Find all td tags with attribite align=center in table tags 
$es = $html->find(''table td[align=center]'); </P><P> 5.Element  的方法
$e = $html->find("div", 0);                              //$e 所拥有的方法如下表所示
Attribute Name Usage 
$e->tag 标签 
$e->outertext 外文本 
$e->innertext 内文本 
$e->plaintext 纯文本 </P><P> </P><P>// Example
$html = str_get_html("<div>foo <b>bar</b></div>"); 
echo $e->tag; // Returns: " div"
echo $e->outertext; // Returns: " <div>foo <b>bar</b></div>"
echo $e->innertext; // Returns: " foo <b>bar</b>"
echo $e->plaintext; // Returns: " foo bar"</P><P>6.DOM traversing 方法
Method Description 
mixed$e->children ( [int $index] ) 子元素 
element$e->parent () 父元素 
element$e->first_child () 第一个子元素 
element$e->last_child () 最后一个子元素 
element$e->next_sibling () 后一个兄弟元素 
element$e->prev_sibling () 前一个兄弟元素 </P><P>
// Example
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
// or 
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
</P>
PHP 相关文章推荐
php扩展ZF――Validate扩展
Jan 10 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php判断用户是否手机访问代码
Jun 08 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
浅谈PHP无限极分类原理
Mar 14 PHP
PHP超全局变量实现原理及代码解析
Sep 01 PHP
解析php php_openssl.dll的作用
Jul 01 #PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 #PHP
浅析PKI加密解密 OpenSSL
Jul 01 #PHP
php pki加密技术(openssl)详解
Jul 01 #PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 #PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 #PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 #PHP
You might like
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
重定向实现代码
2006/11/20 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
Javascript模拟实现new原理解析
2020/03/03 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
使用python实现tcp自动重连
2017/07/02 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
仓库理货员岗位职责
2013/12/18 职场文书
美德少年事迹材料
2014/01/23 职场文书
店面销售职位的职责
2014/03/09 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
春节晚会开场白
2015/05/29 职场文书
杨善洲电影观后感
2015/06/04 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers