用phpQuery像jquery一样解析html代码
简介
如何在php中方便地解析html代码,估计是每个phper都会遇到的问题。用phpQuery就可以让php处理html代码像jQuery一样方便。
项目地址:https://code.google.com/p/phpquery/
github地址:https://github.com/TobiaszCudnik/phpquery
DEMO
下载库文件:https://code.google.com/p/phpquery/downloads/list
我下的是onefile版:phpQuery-0.9.5.386-onefile.zip
官方demo:https://code.google.com/p/phpquery/source/browse/branches/dev/demo.php
然后在项目中引用。
html文件test.html:
- <div class="thumb" id="Thumb-13164-3640" style="position: absolute; left: 0px; top: 0px;">
- <a href="/Spiderman-City-Drive">
- <img src="/thumb/12/Spiderman-City-Drive.jpg" alt="">
- <span class="GameName" id="GameName-13164-3640" style="display: none;">Spiderman City Drive</span>
- <span class="GameRating" id="GameRating-13164-3640" style="display: none;">
- <span style="width: 68.14816px;"></span>
- </span>
- </a>
- </div>
- <div class="thumb" id="Thumb-13169-5946" style="position: absolute; left: 190px; top: 0px;">
- <a href="/Spiderman-City-Raid">
- <img src="/thumb/12/Spiderman-City-Raid.jpg" alt="">
- <span class="GameName" id="GameName-13169-5946" style="display: none;">Spiderman - City Raid</span>
- <span class="GameRating" id="GameRating-13169-5946" style="display: none;">
- <span style="width: 67.01152px;"></span>
- </span>
- </a>
- </div>
php处理:
- <?php
- include('phpQuery-onefile.php');
- $filePath = 'test.html';
- $fileContent = file_get_contents($filePath);
- $doc = phpQuery::newDocumentHTML($fileContent);
- phpQuery::selectDocument($doc);
- $data = array(
- 'name' => array(),
- 'href' => array(),
- 'img' => array()
- );
- foreach (pq('a') as $t) {
- $href = $t -> getAttribute('href');
- $data['href'][] = $href;
- }
- foreach (pq('img') as $img) {
- $data['img'][] = $domain . $img -> getAttribute('src');
- }
- foreach (pq('.GameName') as $name) {
- $data['name'][] = $name -> nodeValue;
- }
- var_dump($data);
- ?>
上面的代码中包含了取属性和innerText内容(通过nodeValue取)。
输出:
- array (size=3)
- 'name' =>
- array (size=2)
- 0 => string 'Spiderman City Drive' (length=20)
- 1 => string 'Spiderman - City Raid' (length=21)
- 'href' =>
- array (size=2)
- 0 => string 'http://www.gahe.com/Spiderman-City-Drive' (length=40)
- 1 => string 'http://www.gahe.com/Spiderman-City-Raid' (length=39)
- 'img' =>
- array (size=2)
- 0 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Drive.jpg' (length=53)
- 1 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Raid.jpg' (length=52)
强大的是pq选择器,语法类似jQuery,很方便。
用phpQuery像jquery一样解析html代码的更多相关文章
- jquery eval解析JSON中的注意点介绍
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:使用eval()函数.使用Function对象来进行返回解析,下面有个示例,感兴趣的朋友可以参考下 在JS中将JSON的字符串解析 ...
- jQuery ajax解析xml文件demo
解析xml文件,然后将城市列表还原到下拉列表框中:当选择下拉列表框时,在对应的文本框中显示该城市信息. 前端代码: <!doctype html> <html> <hea ...
- jquery json解析详解
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: 1 {"comments":[ ...
- 可控制导航下拉方向的jQuery下拉菜单代码
效果:http://hovertree.com/texiao/nav/1/ 代码如下: <!DOCTYPE html> <html> <head> <meta ...
- jquery树形菜单完整代码
本实例实现了树形的动态菜单,兼容IE8,火狐,Chrome等浏览器.使用了jQuery的toggle() 方法.效果和代码如下: <!DOCTYPE html PUBLIC "-//W ...
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView
本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...
- 分析和解析PHP代码的7大工具
PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天小编就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来看看吧 ...
- 10 个实用的 jQuery 表单操作代码片段
jQuery 绝对是一个伟大的开源JavaScript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的 JavaScript,在今天这篇代码片段分享文章中, ...
- jQuery select的操作代码
jQuery對select的操作的实际应用代码. //改變時的事件 复制代码代码如下: $("#testSelect").change(function(){ //事件發生 j ...
随机推荐
- 02.[WPF]如何固定窗口的大小
在WPF开发过程中碰到一个需求,要求保证窗口大小不变,即便是双击 titlebar 也不能改变窗口大小和位置.要实现这样的效果,需要执行如下步骤: 1,分别设置窗口的 Width/MaxWidth/M ...
- one way WebService
WSDL支持4种消息交换方式: 1)单向(One-way):服务端接收消息: 2)请求响应(Request-response):服务端点接收请求消息,然后发送响应消息: 3)要求应答(So ...
- [转帖]FPGA--Vivado
来源:http://home.eeworld.com.cn/my/space-uid-639749-blogid-267593.html 一般的,在Verilog中最常用的编码方式有二进制编码(Bin ...
- oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,
select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constra ...
- NgNice项目案例
技术构架: 服务端技术:NodeJS + Express4.x + Mongodb + Mongoose 前端技术: AngularJS1.2.x + Bootstrap3.x 源码:https:// ...
- gulp安装
1. npm install gulp -g 全局安装 npm install gulp --save-dev 安装文件内,纪录于package.json 接著安装插件,完成下列任务 ...
- 插入排序(C++)
插入排序(C++) 插入排序: 写这篇博文是为了增加对数据结构和算法的理解,同事增加编程的基本功. 当要对如下数据进行排序: 2,8,5,4,6,7,1 2,8,5,4,6,7,1 采用插入排序 ...
- C++序列化库的实现
C++中经常需要用到序列化与反序列化功能,由于C++标准中没有提供此功能,于是就出现了各式各样的序列化库,如boost中的,如谷歌的开源项目,但是很多库都依赖其他库过于严重,导致库变得很庞大.今天来分 ...
- Winform控件Enable=false显示优化
在B/S开发中(ASP.NET),往往可以css样式表来让页面控件更加美观,但是在C/S中(Winform)里面,我们则需要通过其他取巧的 方式来实现.例如:当你因为某个需求需要将控件设置为Reado ...
- mysql数据类型——浮点和定点型
mysql数据类型 字节 含义 float(m,d) 4字节 单精度浮点型,8位精度,m是十进制数字的总个数,d是小数点后面的数字个数 double(m,d) 8字 ...