html-parser 类jquery解析 html

最后更新于:2022-04-02 02:23:49

[TOC] ## 安装 `composer require bupt1987/html-parser` ## 使用 ``` $html = ' test

p1_content

p2_content

p3_content

test1_content
'; $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
  • in
      $es = $html->find('ul li'); // Find Nested
      tags $es = $html->find('div div div'); // Find all in 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
    • 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] 匹配具有指定属性的元素,且该属性包含了一定的值 ``` ';