基于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+SqlServer实现分页显示
Oct 09 PHP
php&amp;java(二)
Oct 09 PHP
php FPDF类库应用实现代码
Mar 20 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php通过session防url攻击方法
Dec 10 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 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
两个强悍的php 图像处理类1
2009/06/15 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
用Python遍历C盘dll文件的方法
2015/05/06 Python
python开发游戏的前期准备
2019/05/05 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
python asyncio 协程库的使用
2021/01/21 Python
servlet面试题
2012/08/20 面试题
第28个世界无烟日活动总结
2015/02/10 职场文书
老公出轨后的保证书
2015/05/08 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
《颐和园》教学反思
2016/02/19 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js