多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 安装 `composer require bupt1987/html-parser` ## 使用 ``` $html = '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>test</title> </head> <body> <p class="test_class test_class1">p1_content</p> <p class="test_class test_class2">p2_content</p> <p class="test_class test_class3">p3_content</p> <div class="img"><img src="http://httpbin.org/image/jpeg" alt=""></div> <div id="test1">test1_content</div> </body> </html>'; $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";//1.p1_content 2.p3_content 3.p3_content } echo $div->getPlainText() . "\n"; //test1_content echo $p1->getPlainText() . "\n"; //p1_content echo $p1->getAttr('class') . "\n"; //test_class test_class1 echo "show html:\n"; echo $div->innerHtml() . "\n";//test1_content $imgdiv = $html_dom->find(".img",0); echo $imgdiv->getAttr("data-test").PHP_EOL; //img_data echo $imgdiv->getPlainText().PHP_EOL;//img_content ``` ### 基础用法 ``` // 查找所有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]'); ``` ### 层级选择器 ``` // Find all <li> in <ul> $es = $html->find('ul li'); // Find Nested <div> tags $es = $html->find('div div div'); // Find all <td> in <table> which class=hello $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 <li> in <ul> foreach($html->find('ul') as $ul) { foreach($ul->find('li') as $li) { // do something... } } // Find first <li> in first <ul> $e = $html->find('ul', 0)->find('li', 0); ``` ### 属性过滤 ``` 支持属性选择器操作: 过滤 描述 [attribute] 匹配具有指定属性的元素. [!attribute] 匹配不具有指定属性的元素。 [attribute=value] 匹配具有指定属性值的元素 [attribute!=value] 匹配不具有指定属性值的元素 [attribute^=value] 匹配具有指定属性值开始的元素 [attribute$=value] 匹配具有指定属性值结束的元素 [attribute*=value] 匹配具有指定属性的元素,且该属性包含了一定的值 ```