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 界面