php html parse,GitHub - bupt1987/html-parser: php html parser,类似与PHP Simple HTML DOM Parser,但是比它快好几倍...

HtmlParser

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f776e6c6f6164732d392e346b2d677265656e2e737667

68747470733a2f2f6170692e7472617669732d63692e6f72672f62757074313938372f68746d6c2d7061727365722e737667

php html解析工具,类似与PHP Simple HTML DOM Parser。

由于基于php模块dom,所以在解析html时的效率比 PHP Simple HTML DOM Parser 快好几倍。

注意:html代码必须是utf-8编码字符,如果不是请转成utf-8

如果有乱码的问题参考:http://www.fwolf.com/blog/post/314

现在支持composer

"require": {"bupt1987/html-parser": "dev-master"}

加载composer

require 'vendor/autoload.php';

================================================================================

Example

require 'vendor/autoload.php';

$html = '

test

p1

p2

p3

测试1

';

$html_dom = new \HtmlParser\ParserDom($html);

$p_array = $html_dom->find('p.test_class');

$p1 = $html_dom->find('p.test_class1',0);

$div = $html_dom->find('div#test1',0);

foreach ($p_array as $p){

echo $p->getPlainText() . "\n";

}

echo $div->getPlainText() . "\n";

echo $p1->getPlainText() . "\n";

echo $p1->getAttr('class') . "\n";

echo "show html:\n";

echo $div->innerHtml() . "\n";

echo $div->outerHtml() . "\n";

?>

基础用法

// 查找所有a标签

$ret = $html->find('a');

// 查找a标签的第一个元素

$ret = $html->find('a', 0);

// 查找a标签的倒数第一个元素

$ret = $html->find('a', -1);

// 查找所有含有id属性的div标签

$ret = $html->find('div[id]');

// 查找所有含有id属性为foo的div标签

$ret = $html->find('div[id=foo]');

高级用法

// 查找所有id=foo的元素

$ret = $html->find('#foo');

// 查找所有class=foo的元素

$ret = $html->find('.foo');

// 查找所有拥有 id属性的元素

$ret = $html->find('*[id]');

// 查找所有 anchors 和 images标记

$ret = $html->find('a, img');

// 查找所有有"title"属性的anchors and images

$ret = $html->find('a[title], img[title]');

层级选择器

// Find all

in

$es = $html->find('ul li');

// Find Nested

tags

$es = $html->find('div div div');

// Find all

in

$es = $html->find('table.hello td');

// Find all td tags with attribite align=center in table tags

$es = $html->find('table td[align=center]');

嵌套选择器

// Find all

in

foreach($html->find('ul') as $ul)

{

foreach($ul->find('li') as $li)

{

// do something...

}

}

// Find first

in first

$e = $html->find('ul', 0)->find('li', 0);

属性过滤

支持属性选择器操作:

过滤描述

[attribute]匹配具有指定属性的元素.

[!attribute]匹配不具有指定属性的元素。

[attribute=value]匹配具有指定属性值的元素

[attribute!=value]匹配不具有指定属性值的元素

[attribute^=value]匹配具有指定属性值开始的元素

[attribute$=value]匹配具有指定属性值结束的元素

[attribute*=value]匹配具有指定属性的元素,且该属性包含了一定的值

Dom扩展用法

获取dom通过扩展实现更多的功能,详见:http://php.net/manual/zh/book.dom.php

/**

* @var \DOMNode

*/

$oHtml->node

$oHtml->node->childNodes

$oHtml->node->parentNode

$oHtml->node->firstChild

$oHtml->node->lastChild

等等...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值