QL\Dom\Elements


  • ](#anchor)
    该对象拥有所有phpQuery的方法,也就是说拥有几乎所有与jQuery操作DOM完全相同的API。

下面列几个常用的API,具体解释可以查看jQuery手册:

  • [HTML属性] 快捷获取html属性
  • map() 元素遍历
  • attr() 获取html属性
  • html() 获取元素的html内容
  • text() 获取元素的text内容
  • attrs() 获取多个元素的html属性
  • htmls() 获取多个元素的html内容
  • texts() 获取多个元素的text内容
  • children() 获取孩子节点
    要采集的html:
  1. $html = <<<STR
  2. <div id="one">
  3. <div class="two">
  4. <a href="http://querylist.cc">QueryList官网</a>
  5. <img src="http://querylist.com/1.jpg" alt="这是图片" abc="这是一个自定义属性">
  6. <img src="http://querylist.com/2.jpg" alt="这是图片2">
  7. </div>
  8. <span>其它的<b>一些</b>文本</span>
  9. </div>
  10. STR;
  11. $ql = QueryList::html($html);

[HTML属性] 获取html属性

快速获取选中元素的任意属性,同attr()方法.

  1. //获取第一张图片的链接地址
  2. $ql->find('img')->src;
  3. //等价下面这句话
  4. $ql->find('img:eq(0)')->src;
  5. //也等价下面这句话
  6. $ql->find('img')->eq(0)->src;
  7. //获取第一张图片的abc属性
  8. $ql->find('img')->abc;
  9. //获取第二张图片的alt属性
  10. $ql->find('img')->eq(1)->alt;
  11. //等价下面这句话
  12. $ql->find('img:eq(1)')->alt;

map() 元素遍历

返回值为Collection集合对象

  1. $data = $ql->find('img')->map(function($item){
  2. return $item->alt;
  3. });
  4. print_r($data->all());

输出:

  1. Array
  2. (
  3. [0] => 这是图片
  4. [1] => 这是图片2
  5. )

attr() 获取html属性

获取选中元素的任意属性.

  1. //获取第一张图片的链接地址
  2. $ql->find('img')->attr('src');
  3. //获取第一张图片的abc属性
  4. $ql->find('img')->attr('abc');
  5. //获取class为two的元素下的第一个a标签的href属性
  6. $ql->find('.two>a')->attr('href');

attrs() 获取多个元素的html属性

返回值为Collection集合对象

  1. //获取所有的图片链接
  2. $data = $ql->find('img')->attrs('src');
  3. print_r($data->all());

输出:

  1. Array
  2. (
  3. [0] => http://querylist.com/1.jpg
  4. [1] => http://querylist.com/2.jpg
  5. )

htmls() 获取多个元素的html内容

返回值为Collection集合对象

  1. $data = $ql->find('#one')->append('<div>追加内容</div>')->find('div')->htmls();
  2. print_r($data->all());

输出:

  1. Array
  2. (
  3. [0] => <a href="http://querylist.cc">QueryList官网</a>
  4. <img src="http://querylist.com/1.jpg" alt="这是图片" abc="这是一个自定义属性"><img src="http://querylist.com/2.jpg" alt="这是图片2">
  5. [1] => 追加内容
  6. )

children() 获取孩子节点

  1. //获取class为two元素下的所有img孩子节点
  2. $data = $ql->find('.two')->children('img')->attrs('alt');
  3. print_r($data->all());
  4. //获取class为two元素下的所有孩子节点
  5. $data = $ql->find('.two')->children()->map(function ($item){
  6. //用is判断节点类型
  7. if($item->is('a')){
  8. return $item->text();
  9. }elseif($item->is('img'))
  10. {
  11. return $item->alt;
  12. }
  13. });
  14. print_r($data->all());

输出:

  1. Array
  2. (
  3. [0] => 这是图片
  4. [1] => 这是图片2
  5. )
  6. Array
  7. (
  8. [0] => QueryList官网
  9. [1] => 这是图片
  10. [2] => 这是图片2
  11. )