PHP处理html简单好工具-simplehtmldom

By | 2010/06/07

php方面, 网络有很多成熟易用的DOM处理工具, 对比了好几个,  一般都是通过DOM选择器来定位要处理的内容. 也都可以选择标签属性, 如果你还在用PHP的原始函数来处理html吗, 那就太落后了. 这些dom处理工具比自己用PHP函数来处理不知道要高效果多少倍.

这里介绍一下比较简单易用的dom处理工具 –  simplehtmldom.  主要是它小巧, 一个文件就行, 易用, 你很快就可以明白如何使用. 如果你只是简单处理html, 或者做一些提取hmtl内容的工作, 这个完全够用.

simplehtmldom官方主页,  你可以点击这里下载

第一步: 就是要加载simplehtmldom的类. 它提供3种加载方法,  一种是直接字串, 一种是提供URL, 还有一种就是加载html文件.

// Create a DOM object from a string
$html = str_get_html(‘<html><body>Hello!</body></html>’);// Create a DOM object from a URL
$html = file_get_html(‘http://www.google.com/’);

// Create a DOM object from a HTML file
$html = file_get_html(‘test.htm’);

加载类以后就可以处理html了.  如果要选择特定的标签可ID标签, 只要使用Find方法就可以了.

// Find all anchors, returns a array of element objects
$ret = $html->find(a);

// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find(a‘, 0);

// Find lastest anchor, returns element object or null if not found (zero based)
$ret = $html->find(a‘, -1);

// Find all <div> with the id attribute
$ret = $html->find(div[id]);

// Find all <div> which attribute id=foo
$ret = $html->find(div[id=foo]);

这里选择以后, $ret还是一对象, 要通过foreach才能得到内容.

// find all div tags with id=gbar
foreach($html->find(‘div#gbar’) as $e)
echo $e->innertext . ‘<br>’;

// find all span tags with
foreach($html->find(‘span.gb1’) as $e)
echo $e->outertext . ‘<br>’;

上面的代码差不多就能明白simplehtmldom的主要功能了.  div#gbar就是选择ID为gbar的DIV标签,  span.gb1就是选择CSS类为gb1的span, outertext和innertext就是取得标签的文本内容, 区别是outertext会包含标签本身.

还有选择标签属性, 更改属性, 保存内容等, 可以看下官方的教程.

还有一些功能更强大的html处理工具, 如phpQuery, 有像jQuery一样强大的dom处理能力, 但使用没有那么容易上手,有兴趣的朋友可以去了解一下.

原创文章 转载请注明出处: 登高望远 [ http://www.dengor.com/archives/798.html ]