基于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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
php和asp语法上的区别总结
May 12 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 PHP
PHP 时间处理类Carbon
May 20 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读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
destoon之一键登录设置
2014/06/21 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
关于js类的定义
2011/06/28 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
element中的$confirm的使用
2020/04/26 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
python中正则表达式的使用方法
2018/02/25 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python中logging日志库实例详解
2020/02/19 Python
python能在浏览器能运行吗
2020/06/17 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
岗位聘任书范文
2014/03/29 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
党员证明模板
2015/06/19 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
带你学习MySQL执行计划
2021/05/31 MySQL
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers