phpQuery
以下资料均来自官方文档,官方文档地址:https://code.google.com/archive/p/phpquery/wikis
基础
示例
phpQuery::newDocumentFileXHTML('my-xhtml.html')->find('p'); $ul = pq('ul');
载入文档
- phpQuery::newDocument($html, $contentType = null) 根据标记URL新建一个文档。如果 $contentType为空,则根据文档自动检测编码。检测失败, 则对于text/html类型文档自动赋予utf-8编码。
- phpQuery::newDocumentFile($file, $contentType = null) 根据文件新建一个文档。类似于newDocument()
- phpQuery::newDocumentHTML($html, $charset = 'utf-8')
- phpQuery::newDocumentXHTML($html, $charset = 'utf-8')
- phpQuery::newDocumentXML($html, $charset = 'utf-8')
- phpQuery::newDocumentPHP($html, $contentType = null)
- phpQuery::newDocumentFileHTML($file, $charset = 'utf-8')
- phpQuery::newDocumentFileXHTML($file, $charset = 'utf-8')
- phpQuery::newDocumentFileXML($file, $charset = 'utf-8')
- phpQuery::newDocumentFilePHP($file, $contentType)
pq function
pq($param, $context = null);
pq(); 相当于 jQuery的$();。它主要完成三件事情:
1. 载入标记资源:
// 输入到载入的文档:
// 对于最开始输入的字符串不接收文本类型的节点:pq('<div/>')
// 从$pq->getDocumentID()根据ID载入到文档: pq('<div/>', $pq->getDocumentID())
// 根据DOM节点的归属将同样的文档载入:pq('<div/>', DOMNode)
// 从phpQuery 对象载入文档: pq('<div/>', $pq)
2. 运行查询
// 根据最后一个选择的文档执行查询:pq('div.myClass')
// 根据$pq->getDocumentID()的ID从文档中进行查询:pq('div.myClass', $pq->getDocumentID())
// 在同样的文档上根据DOM节点的归属进行查询并且使用节点作为查询的根节点:pq('div.myClass', DOMNode)
// 在文档上使用phpQuery对象进行查询
// 同时使用对象的栈作为根节点进行查询: pq('div.myClass', $pq)
3. 使用phpQuery对象对DOM节点进行原型化操作
foreach(pq('li') as $li) // $li是纯DOM节点, 将它变为phpQuery对象: pq($li);
选择器
选择器是类似于jQuery接口的一个核心。大多数CSS3语法已经被采用(和jQuery保持同步)。
示例
pq(".class ul > li[rel='foo']:first:has(a)")->appendTo('.append-target-wrapper div')->...
基础
#id 根据给定的ID属性匹配单个元素。
- element 根据给定的名称匹配所有符合的元素。
- .class 根据给定的class匹配所有的元素。
- * 选择所有元素。
selector1, selector2, selectorN 根据所有制定的选择器匹配结合结果。
层级
ancestor descendant 匹配由先祖指定的元素的后代指定的所有后代元素。
- parent > child 匹配由父元素指定的子元素指定的所有子元素。
- prev + next 根据指定的"next"和指定的"prev"匹配所有的下一个元素。
prev ~ siblings 匹配根据"prev" 元素的 所有相邻元素。
基础过滤
:first匹配第一个被选择的元素。
- :last 匹配最后一个被选择的元素。
- :not(selector) 匹配所有不是被选择的元素。
- :even 匹配所有被选择的偶数元素,0索引。
- :odd 匹配所有被选择的奇数元素,0索引。
- :eq(index) 匹配等同于给定的索引的元素。
- :gt(index) 匹配大于给定的索引的元素。
- :lt(index) 匹配小于给定的索引的元素。
- :header 匹配所有header元素,如h1,h2,h3等。
:animated 匹配正在进行动画效果的元素。
文本过滤
:contains(text) 匹配包含指定文本的元素。
- :empty 匹配所有无子节点的元素(包括文本节点)。
- :has(selector) 匹配至少包含一个对于给定选择器的元素。
- :parent 匹配所有父元素 - 拥有子元素的,包括文本。
属性过滤
- [attribute] 匹配给定属性的元素。
- [attribute=value] 匹配给定属性等于确定值的元素。
- [attribute!=value] 匹配给定属性不等于确定值的元素。
- [attribute^=value] 匹配给定属性是确定值开始的元素。
- [attribute$=value] 匹配给定属性是确定值结尾的元素。
- [attribute*=value] 匹配给定属性包含确定值的元素。
[selector1selector2selectorN] 匹配给定属性并且包含确定值的元素。
子元素过滤
:nth-child(index/even/odd/equation) 匹配所有是父元素的第n个的子元素,或者是父元素的偶数或者奇数子元素。
- :first-child 匹配所有是父元素的第一个的子元素。
- :last-child 匹配所有是父元素的最后一个的子元素。
:only-child 匹配所有是父元素唯一子元素的子元素。
表单
:input 匹配input, textarea, select和button元素。
- :text 匹配所有类型为text的input元素。
- :password 匹配所有类型为password的input元素。
- :radio 匹配所有类型为radio的input元素。
- :checkbox 匹配所有类型为checkbox的input元素。
- :submit 匹配所有类型为submit的input元素。
- :image 匹配所有类型为image的input元素。
- :reset 匹配所有类型为reset的input元素。
- :button 匹配所有类型为button的input元素和button元素。
- :file 匹配所有类型为file的input元素。
:hidden 匹配所有类型为hidden的input元素或者其他hidden元素。
表单过滤
方法
示例
pq('a')->attr('href', 'newVal')->removeClass('className')->html('newHtml')->...
Attr
attr($name) 访问第一个给名称的元素的属性。这个方法可以很轻易地取得第一个匹配到的元素的属性值。如果这个元素没有对应名称的属性则返回undefined。
- attr($properties) 对于所有匹配到的元素设置对应属性。
- attr($key, $value) 对于匹配到的元素设置一个属性和对应值。
- attr($key, $fn) 对于匹配到的元素设置一个属性和需要计算的值。
removeAttr($name) 对匹配到的元素移除给定名称的属性。
Class
- hasClass($class) 如果有至少一个匹配到的元素包含给定的类则返回true。
- removeClass($class) 对匹配到的元素移除给定名称的类。
toggleClass($class) 对匹配到的元素,如果类不存在则添加,如果存在则移除。
HTML
Text
Value
- val($val) 对匹配到的元素设置value值。
- val($val) 所有的Checks, selects, radio buttons, checkboxes,和select options都会设置相应给定的值。
phpQuery的更多相关文章
- Snoopy+phpquery采集demo
用phpquery类,写了个采集的demo,以 某网贷平台的 一个列表为例,我们要采集该平台下面的 各平台名称,结构树如下 include 'phpQuery.php'; phpQuery::newD ...
- php+phpquery简易爬虫抓取京东商品分类
这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...
- phpQuery—基于jQuery的PHP实现
转载于:http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html Query的选择器之强大是有目共睹的,phpQuery 让p ...
- curl模拟浏览器进行phpQuery抓取数据
报Warning: file_get_contents(http://www.dianping.com/shop/8042874) [function.file-get-contents]: fail ...
- phpQuery用法
了解phpQuery使用前了温习jquery.js的选择用法 jquery选择器,还有一个衍生产品QueryList 例: include 'phpQuery.php'; phpQuery::newD ...
- phpQuery轻松采集网页内容
原文地址:phpQuery轻松采集网页内容作者:陌上花开 phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息.更有意思的是,它 ...
- 用phpQuery像jquery一样解析html代码
简介 如何在php中方便地解析html代码,估计是每个phper都会遇到的问题.用phpQuery就可以让php处理html代码像jQuery一样方便. 项目地址:https://code.googl ...
- phpquery笔记
下载phpquery包 require('phpQuery/phpQuery.php');//加载 for($i=1168;$i<=10000;$i++){ phpQuery::newDocum ...
- 使用phpQuery实现批量文件处理
能够将置顶文夹下的指定类型文件进行处理 <?php header('Content-Type:text/html;Charset=utf-8'); include './phpQuery/php ...
- phpQuery 无法解析 html 结构
有时候解析一段 HTML 代码时 phpQuery 无法解析原因: 可能是缺少类似下面的 meta 信息,在带解析的字符串任意位置添上即可 : <meta http-equiv="Co ...
随机推荐
- TypeScript 入门指南 【大白话】
前言 聊聊为何要学习TypeScript? 从开发角度来讲, TypeScript 作为强类型语言,对属性有类型约束.在日常开发中少了减少了不必要的因参数类型造成的BUG,当你在使用同事封装好的函数时 ...
- WPF 实现完全可控制的漂亮自定义窗口
在WPF界面开发中,有时候不想用系统的死板的窗口,想要来点新花样,常会自定义窗口. 那么,先抛出问题,想搞出下面这样的窗口,该咋整 ? aa 下面看一个啥也没设置过的普通窗口,这样的窗口,我们只能控 ...
- springboot中@Mapper和@Repository的区别
@Mapper和@Repository是常用的两个注解,两者都是用在dao上,两者功能差不多,容易混淆,有必要清楚其细微区别: 区别: @Repository需要在Spring中配置扫描地址,然后生成 ...
- Jsoup类
一.简介 Jsoup是一款HTML解析器,可以直接解析url地址,也可以解析html文本内容.也可通过DOM.CSS以及类似于jQuery的操作方法来取出和操作数据.其主要功能: 1.从url.字符串 ...
- 页面的跳转MVVM,带参数的传递
主页面 -------------------------- <Page x:Class="CheckMemoryLeak.MainPage" xmlns="htt ...
- mysql ORDER BY 中文出现错误问题
在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决,那么MySQL将无法 ...
- 模拟文件上传(三):使用apache fileupload组件进行文件批量上传
其中涉及到的jar包 jsp显示层: <%@ page language="java" import="java.util.*" pageEncoding ...
- xmake v2.5.7 发布,包依赖锁定和 Vala/Metal 语言编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- SpringBoot博客开发之异常处理
异常处理: 背景: 最近在搭建属于自己的个人博客(码农小白的执念),自己搭建后端的时候首先考虑的是异常处理.个人也是一边学习一边做,难免有疏漏的地方,希望朋友们在不对的地方提醒下. 技术栈: spri ...
- Ubuntu18.04 + NVidia显卡 + Anaconda3 + Tensorflow-GPU 安装、配置、测试 (无需手动安装CUDA)
其中其决定作用的是这篇文章 https://www.pugetsystems.com/labs/hpc/Install-TensorFlow-with-GPU-Support-the-Easy-Wa ...