标签: querypath

结合jQuery和Zen-Coding php端口,在服务器端脚本上模拟客户端编程风格

当我编写客户端代码时,我使用HTML/CSS/JavaScript和最近的jQuery来加速编码,并使用改进的方法来实现相同的目标.

在我的文本编辑器中,我使用zen-coding来加速代码编写,并避免错误.我暂时将zen-coding视为一个jQuery插件,但它有一个致命的缺陷,你希望在任何javascript开始之前编写HTML并将其发送到客户端.

虽然我们可以使用JavaScript服务器(env.js或node.js),因此使用JavaScript和jQuery做了很多开发服务器端,但我不喜欢移动它,因为它是一种新兴技术,并且有很多不同和缺点(还有一些主要优点).

我想继续使用PHP服务器端,但以我最熟悉的方式开发,熟悉哪个是客户端JavaScript.

因此 - 我一直在研究QueryPath,这是一个jQuery的PHP端口,旨在获取jQuery的最佳和最相关的部分,并重新设计它以适应服务器环境.

这一切都很棒,我现在一直在研究两个能够解析zen编码的PHP类,它们在组合时可以作为一个很好的模板引擎,也可以避免代码中的错误.

我遇到的问题是zen编码解析器都不支持任何接近完整的zen编码功能集.

所以最后我的问题(抱歉相当冗长的介绍)

  1. 我可以在我的PHP代码中使用更好的服务器端zen编码解析器吗?
  2. 是否有一个好的(非常简洁和全功能)替代模板系统使用禅编码?(我知道这不是最初为此任务设计的)
  3. 有没有更好的方法来实现我的最终目标,即缩小我编码客户端和服务器端的方式之间的界限?
  4. 是否有一个PHP库实现了大量的实用程序函数,通过使用它将增强我的代码的安全性/性能,而无需我学习所有内部工作?(就像jQuery为javascript做的那样)

注意:我正在寻找功能等同而不是句法相似性 - 尽管两者对我来说都是一个加分.

这是一些注释的测试代码,应该阐明我想要实现的目标:

<?php

    // first php based zen-coding parser
    // http://code.google.com/p/zen-php
    require_once 'ZenPHP/ZenPHP.php';
    // my own wrapper function
    function zp($abbr){ return ZenPHP::expand($abbr); }

    // second php based zen-coding parser
    // https://github.com/philipwalton/PW_Zen_Coder
    require_once 'PW_Zen_Coder/PW_Zen_Coder.php';
    $zc = new PW_Zen_Coder;
    // my own wrapper function
    function pwzc($abbr){ global $zc; return $zc->expand($abbr); }

    // php port of jQuery with a new server-side flavor
    // http://querypath.org/
    require_once 'QueryPath/QueryPath.php';

    // …
Run Code Online (Sandbox Code Playgroud)

javascript php jquery querypath emmet

10
推荐指数
1
解决办法
1268
查看次数

使用QueryPath在foreach中使用多个find

我正在使用QueryPath和PHP.

这可以找到.eventdate,但不会返回.dtstart的任何内容:

$qp = htmlqp($url);
foreach ($qp->find('table#schedule')->find('tr') as $tr){
    echo 'date: ';
    echo $tr->find('.eventdate')->text();
    echo ' time: ';
    echo $tr->find('.dtstart')->text();
    echo '<br>';
}
Run Code Online (Sandbox Code Playgroud)

如果我交换这两个,.dtstart工作正常,但.eventdate不会返回任何内容.因此,似乎querypath中的find()会破坏元素并仅返回它所需的值,使得迭代超过$ tr无法搜索多个项目.

这是我正在处理的TR的示例HTML:

<tr class="event"><th class="date first" scope="row"><abbr class="eventdate" title="Thursday, February 01, 2011" >02/01</abbr><span class="eventtime" ><abbr class="dtstart" title="2012-02-01T19:00:00" >7:00 PM</abbr><abbr class="dtend" title="2012-02-01T21:00:00" >9:00 PM</abbr></span></th><td class="opponent summary"><ul><li class="first">@ <a class="team" href="/high-schools/ridge-wolves/basketball-winter-11-12/schedule.htm" >Ridge </a> <span class="game-note">*</span></li><li class="location" title="Details: Ridge High School">Details: Ridge High School</li><li class="last"><a class="" href="/local/stats/pregame.aspx?contestid=4255-4c6c-906d&amp;ssid=381d-49f5-9f6d" >Preview Game</a></li></ul></td><td class="result last"><a class="pregame" href="/local/stats/pregame.aspx?contestid=4255-4c6c-906d&amp;ssid=381d-49f5-9f6d">Preview</a></td></tr>
Run Code Online (Sandbox Code Playgroud)

我尝试在第一次找到之前复制$ tr并在第二次找到之前替换它,但这不起作用.

如何在每个$ tr期间搜索某些变量?

仅供参考,超过.eventdate和.dtstart,我也想要.opponent,href在a …

php querypath

3
推荐指数
2
解决办法
2991
查看次数

Querypath和格式错误的HTML

我正在使用QueryPath来操作页面DOM.我正在操作的页面有一些标签,QueryPath不知道如何解释.

我已经尝试将以下内容作为选项传递,但我仍然会收到错误:

ignore_parser_warnings
use_parser(html)

启用这些错误后会出现以下错误:

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag nobr invalid in Entity

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag nobr invalid in Entity

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag nobr invalid in Entity

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity

任何帮助将不胜感激.

php querypath

2
推荐指数
1
解决办法
1872
查看次数

标签 统计

php ×3

querypath ×3

emmet ×1

javascript ×1

jquery ×1