PHP 的类似 jQuery 的界面?

Posted

技术标签:

【中文标题】PHP 的类似 jQuery 的界面?【英文标题】:jQuery-like interface for PHP? 【发布时间】:2010-11-24 17:58:21 【问题描述】:

我很好奇是否存在用于处理 html/XML 文件的 jQuery 样式的 php 界面/库 - 特别是使用 jQuery 样式 selectors。

我想做这样的事情(所有假设):

foreach (j("div > p > a") 作为锚点) // ... 打印 j("#some_id")->html(); 打印 j("a")->eq(0)->attr("name");

这些只是几个例子。

我尽可能多地在谷歌上搜索,但找不到我要找的东西。有谁知道是否存在这些方面的东西,或者这是我必须自己使用 domxml 从头开始​​制作的东西?

【问题讨论】:

您确实在寻找 CSS3 和 XPATH 样式选择器。 JQuery 和其他 JS 库都基于那些标准化的 XML 选择器。 最新的 jQuery for PHP 是 github.com/technosophos/querypath 【参考方案1】:

PHP Simple HTML DOM Parser 使用 jQuery 样式的选择器。来自documentation 的示例:

修改 HTML 元素:

// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

$html->find('div', 1)->class = 'bar';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>

抓取斜线点:

// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) 
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;


print_r($articles);

【讨论】:

【参考方案2】:

再打猎,我想我可能已经找到了我正在寻找的东西:

phpQuery - jQuery port to PHP

感谢大家的回答,我一定会记住它们以用于其他用途。

【讨论】:

如果 phpQuery 回答了你的问题,你应该勾选这个作为答案。 我已经尝试过了,我需要等待 2 天才能明显接受我自己的答案。 嘿,请问您是如何在 phpQuery 和 QueryPath 之间做出选择的?我想选一个。 旧但它仍然适用于 php 7.3.3。提供的链接中的项目是archived,在Github 有一个稍微旧的repo,它有一些演示语法。【参考方案3】:

这个问题很老,但你需要的是Query Path。

【讨论】:

绝对是最好的,最新的 jQuery for PHP! 这绝对是一个很好的解决方案,它不需要对 PHP 安装做任何事情【参考方案4】:

相信我,您正在寻找 xPath。我给你举个例子

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://somewhereinblog.net');

libxml_clear_errors();

$xPath = new DOMXPath($dom);
$links = $xPath->query('//h1//a'); //This is xPath. Really nice and better than anything
foreach($links as $link) 
    printf("<p><a href='%s'>%s</a></p>\n", $link->getAttribute('href'), $link->nodeValue);

?>

【讨论】:

【参考方案5】:

我找到的最好的是https://github.com/scotteh/php-dom-wrapper

它的工作原理与 jQuery 非常相似,而且速度很快。

我从其他答案中尝试了许多库,但我没有设法轻松地移植我在 jQuery 中所做的操作。有了这个就轻而易举了。我想它很快就会变得更受欢迎......

【讨论】:

截至 2018-07-05,这是最近更新的插件,也可以通过 composer 获取【参考方案6】:

http://fluentdom.org/ 是另一种选择。

【讨论】:

【参考方案7】:

我编写了一个库,它在 PHP 中复制了 jQuery 的 DOM 操作方法,但它使用 xpath,而不是 jquery 样式选择器。否则,它的工作原理几乎相同。

[http://pxtreme.sourceforge.net][1]

$doc = px("index.html"); // Create a px Object
$headings=$doc->xpath("/html/body/h2"); // Select Elements to Manipulate
$headings->addClass("NewLook"); // Change their Appearance
px("index.html")->xpath("//h2")->addClass("NewLook"); // All in One Line

// use anonymous functions in PHP 5.3
$doc->xpath("//p")->each( function ($pxObject, $index) 
  $str = $pxObject->get($index)->text();
  if (mb_strpos($str, "pxtreme"))
   $px->attr("title", "Check out this paragraph!");
);

http://pxtreme.sourceforge.net

【讨论】:

【参考方案8】:

HtmlPageDom 扩展了 Symfony 的 DOM Crawler 并添加了类似 jQuery 的 DOM 操作函数。

【讨论】:

这个更有意义,因为它使用更新的组件来读取 DOM。【参考方案9】:

我的选择是https://github.com/gymadarasz/xparser

快速且易于使用,示例:

$x('#nav a', function($elem) 
  $elem->href = '//myurl/' . $elem->href;
);

【讨论】:

【参考方案10】:

simplexml 或许?它的语法与 jquery 不同,但它确实使遍历 XML 变得非常容易。

但它不适用于不是有效 XML 的 HTML。

【讨论】:

【参考方案11】:

您是否考虑过使用 PHP 的 DOMDocument 类?

http://us2.php.net/manual/en/book.dom.php

不确定这是否正是您要查找的内容,但它确实允许通过各种属性搜索文档以及其他此类 DOM 操作。

【讨论】:

【参考方案12】:

如果您使用现代框架,您也应该检查这些。

http://symfony.com/doc/current/components/dom_crawler.html http://symfony.com/doc/current/components/css_selector.html

这些组件可以通过 composer 安装。

【讨论】:

以上是关于PHP 的类似 jQuery 的界面?的主要内容,如果未能解决你的问题,请参考以下文章

利用 jQuery UI 和 Ajax 创建可定制的 Web 界面

H5仿微信界面教程

贡献一下多年珍藏的特效例子

我想用C#做个WinForm界面,类似迅雷7那样的按钮效果,该如何实现,我不要求那种动画效果

官方的jQuery用户界面库。

项目前端主要基于JQUERY EASYUI的界面美化