热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

服务器端的HTML处理使用phpQuery

在我们每天的web开发的日常任务,有必要我们可以和客户端和服务器端代码工作。我们写使用PHP业务逻辑和生成要显示在用户的浏览器的HTML。然后,我们使用的框架如jQuery或原型,以提供客户端交互。

在我们每天的web开发的日常任务,有必要我们可以和客户端和服务器端代码工作。 我们写使用PHP业务逻辑和生成要显示在用户的浏览器的HTML。 然后,我们使用的框架如jQuery或原型,以提供客户端交互。

现在想想你可以如何使用服务器端PHP代码改变和操作生成的HTML。 phpQuery是将来到你的头脑的最终解决方案。 如果你还没有听说过phpQuery,你可能有兴趣在这篇文章中,因为我想给你一个简单的介绍phpQuery,并解释如何在实际项目中使用它。

什么是phpQuery

phpQuery是基于jQuery Javascript库服务器端,可链,CSS3选择器驱动的文档对象模型(DOM)API。

这是官方给出的定义phpQuery项目页面 。 如果你已经使用了jQuery,那么你将有它如何简化需要DOM操作多任务的想法。 phpQuery正好提供了在您的服务器端PHP代码中所用的相同的功能。 您可以使用echo语句和类似的方法说再见凌乱的HTML代码生成。

你将有机会获得大多数在phpQuery,大致可分为以下提及的4个任务所提供的jQuery的功能:

  • 创建DOM元素
  • 选择和操作元素
  • 通过DOM遍历
  • 打印输出到浏览器

“移植的jQuery节”,你可以使用它被称为由phpQuery提供的功能执行的任务让我们首先看到的功能:

  • 选择 -找到根据给定条件的元素。
  • 属性 -操作DOM元素的属性。
  • 穿越 -出差经过选择的元素的列表。
  • 操作 -添加和选定的元素删除内容。
  • 阿贾克斯 -创 建服务器端的Ajax请求。
  • 活动 -在选定的元素绑定DOM事件。
  • 实用工具 -通用功能,以支持其他功能。

您可以从项目页面中下载phpQuery库code.google.com / P / phpquery 。 将文件夹复制到你的web服务器,你准备去。 安装很简单,你可以执行demo.php文件上手。

如何使用phpQuery

我将告诉你如何创建一个两列的无序列表,标题和不同行的颜色为奇数和偶数行,如下图所示的图像:

首先,让我们创建一个使用phpQuery一个HTML文档:

1
2
3
require("phpQuery/phpQuery.php");
$doc= phpQuery::newDocument("
");

上面的代码将创建一个基本的HTML文档用div标签。 该库提供了创建文档的各种方法,我用最简单的一个,但你可以找到其他人在demo.php和文档。

现在,我们需要创建一个无序列表,并把它添加到我们的HTML文件。

1
2
3
4
5
6
7
8
9
10
11
12
...
$doc["div"]->append("
  • Product Name
  • Price
");
$products=array(
    array("Product 1","$30"),
    array("Product 2","$50"),
    array("Product 3","$20"));
 
foreach($productsas$key=>$product) {
    $doc["div ul"]->append("
  • $product[0]
  • $product[1]
  • ");
    }
    print$doc;

    你可以看到,我们有无序列表现在。 但是,所有的元素都在一个单一的列,它是默认的。 我们要移动清单的偶数元素到第二列。

    1
    2
    3
    4
    5
    ...
    $doc["div ul"]->attr("style","width:420px;");
    $doc["div ul"]->find("li:even")->attr("style","width:200px; float:left; padding:5px; list-style:none;");
    $doc["div ul"]->find("li:odd")->attr("style","width:200px; float:left; padding:5px; list-style:none;");

    我使用的样式属性来定义这里为我们的示例所需的CSS样式,但它不推荐使用内联样式,除非它真正需要的。始终使用CSS类来添加样式。

    现在,让我们来突出标题,并使用phpQuery方法偶数行。

    1
    2
    3
    4
    5
    ...
    $doc["div ul"]->find("li:nth-child(4n)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;");
    $doc["div ul"]->find("li:nth-child(4n-1)")->attr("style","background:#EEE; width:200px; float:left; padding:5px; list-style:none;");
    $doc["div ul"]->find("li:lt(1)")->attr("style","background:#CFCFCF; width:200px; float:left; padding:5px; list-style:none;");

    我们已经完成了我们的简单的例子,你现在应该有phpQuery如何可以用来简化HTML生成服务器端的一个想法。 我们所做的一切,几乎是将使用jQuery来完成相同的,除了我们做对了所有的动作$doc对象。

    phpQuery的重要性

    虽然我解释phpQuery的功能,你一定想知道为什么我们需要库时,我们有对jQuery的客户端。 我将展示使用实际情况下phpQuery的重要性。

    考虑下面的情况:假设我们有一个如下所示,其中有所有关于谁去采访Web开发人员的信息表。

    现在,这里有我们在这种情况下,发展的要求列表:

    • 谁得到了一个标志超过60考试申请人应以蓝色突出显示。
    • 申请人具有3年以上工作经验,应该在前面的链接标有“申请高级软件工程师”和其他申请者应具备的链接“申请软件工程师”。
    • 公司拥有基于经验的薪酬结构:
      • 1年 - $ 5,000
      • 2年 - $ 10,000
      • 3年 - $ 20,000
      • 超过3年 - $ 50,000

      salary列应以绿色为申请谁符合条件加以强调。

    这是输出的外观:

    开发人员可以提供以下解决方案来满足使用纯PHP代码的要求。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    // retrieve applicants from database
    //...
     
    echo<<
     
      
    Name
      
    Marks
      
    Experience
      
    Position
      
    Expected Salary
     
    ENDHTML;
    foreach($applicantsas$applicant) {
        echo'
    ';
        echo"
    ".$applicant["name"] ."
    ";
        echo'
    ' .$applicant["marks"] ."
    ";
        echo"
    ".$applicant["experience"] ."
    ";
        echo"
    ". positionLink($applicant["experience"]) ."
    ";
        echo'
    ' .$applicant["salary"] ."
    ";
        echo"
    ";
    }
    echo"
    ";
     
    functionmarksClass($info) {
        return($info> 60) ?"pass":"fail";
    }
     
    functionpositionLink($experience) {
        return($experience> 3)
            :'Apply for Software Engineer';
    }
     
    functionsalaryClass($experience,$salary) {
        switch($experience) {
            case1:
                return($salary<5000) ?"accept":"reject";
            case2:
                return($salary<10000) ?"accept":"reject";
            case3:
                return($salary<20000) ?"accept":"reject";
            default:
                return($salary<50000) ?"accept":"reject";
        }
    }

    现在,让我们使用phpQuery做,比较代码和优势。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    require("phpQuery/phpQuery.php");
    $doc= phpQuery::newDocument('
    ');
    phpQuery::selectDocument($doc);
     
    // retrieve applicants from database
    //...
     
    $doc["#main"]->append('
     
      
    Name
      
    Marks
      
    Experience
      
    Position
      
    Expected Salary
     
    ');
     
    foreach($applicantsas$key=>$applicant) {
        $doc["#main"]->append('
    ');
        foreach($applicantas$field=>$info) {
            $doc["#main"]->find("#app_".$key)->append('
    '.$info."
    ");
            if($field=="experience") {
                $doc["#main"]->find("#app_".$key)->append('
    -
    ');
            }
        }
    }
     
    addMarksClass($doc);
    addSalaryClass($doc);
    addPositionLink($doc);
     
    print$doc;
     
    functionaddMarksClass(&$doc) {
        $marks= pq("._marks");
        foreach($marksas$appMark) {
            if(pq($appMark)->html() > 60) {
                pq($appMark)->addClass("pass");
            }
            else{
                pq($appMark)->addClass("fail");
            }
        }
    }
     
    functionaddSalaryClass(&$doc) {
        $marks= pq("._salary");
        foreach($marksas$appMark) {
            $experience= pq($appMark)->parent()->find("._experience")->html();
            $salary= pq($appMark)->html();
     
            switch($experience) {
                case1:
                    pq($appMark)->addClass(
                        ($salary<5000) ?"accept":"reject"
                    );
                    break;
                case2:
                    pq($appMark)->addClass(
                        ($salary<10000) ?"accept":"reject"
                    );
                    break;
                case3:
                    pq($appMark)->addClass(
                        ($salary<20000) ?"accept":"reject"
                    );
                    break;
                default:
    var cpro_id = "u6885494";
    推荐阅读
    • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
    • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
    • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
    • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
    • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
    • Java实战之电影在线观看系统的实现
      本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
    • CSS3选择器的使用方法详解,提高Web开发效率和精准度
      本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
    • 知识图谱——机器大脑中的知识库
      本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
    • Voicewo在线语音识别转换jQuery插件的特点和示例
      本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
    • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
    • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
    • 从零基础到精通的前台学习路线
      随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
    • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
    • 如何压缩网站页面以减少页面加载时间
      本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
    • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
      web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
    author-avatar
    望空心vn
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有