CssSelector组件

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

CssSelector组件

CssSelector组件将CSS选择器转换为XPath表达式。

安装

1
作曲家需要symfony/css-欧宝娱乐app下载地址selector

请注意

如果在Symfony应用程序外部安装此组件,则必须要求欧宝娱乐app下载地址供应商/ autoload.php文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。

使用

另请参阅

本文解释了如何在任何PHP应用程序中使用CssSelector特性作为独立组件。读了欧宝娱乐app下载地址Symfony功能测试文章,以了解在创建Symfony测试时如何使用它。欧宝娱乐app下载地址

为什么使用CSS选择器?

在解析HTML或XML文档时,迄今为止最强大的方法是XPath

XPath表达式非常灵活,因此几乎总是有一个XPath表达式可以找到您需要的元素。不幸的是,它们也可能变得非常复杂,学习曲线也很陡峭。即使是常见的操作(例如查找具有特定类的元素)也可能需要冗长而笨拙的表达式。

许多开发人员——尤其是web开发人员——更喜欢使用CSS选择器来查找元素。和在样式表中工作一样,CSS选择器在JavaScript中与querySelectorAll ()函数和流行的JavaScript库,如jQuery。

CSS选择器没有XPath强大,但是更容易编写、阅读和理解。由于CSS选择器功能较弱,几乎所有的CSS选择器都可以转换为XPath的等效选择器。然后,可以将这个XPath表达式与使用XPath查找文档中的元素的其他函数和类一起使用。

CssSelector组件

该组件的唯一目标是将CSS选择器转换为XPath等价物,使用toXPath ()

1 2 3 4
使用欧宝娱乐app下载地址组件CssSelectorCssSelectorConverter转换器CssSelectorConverter ();var_dump (转换器->toXPath ('div.item > h4 > a'));

输出如下:

1
descent -or-self::div[@class and contains(concat(' ',normalize-space(@class), ' '), ' item ')]/h4/a

你可以用这个表达,例如,DOMXPathSimpleXMLElement查找文档中的元素。

提示

爬虫:过滤器()方法使用CssSelector组件根据CSS选择器字符串查找元素。看到DomCrawler组件欲知详情。

CssSelector组件的限制

不是所有的CSS选择器都可以转换为XPath等价物。

有几个CSS选择器只在web浏览器上下文中有意义。

  • 链路状态选择器::链接:参观:目标
  • 基于用户操作的选择器::徘徊:专注:主动
  • ui状态选择器::无效:不确定(然而,:启用:禁用:检查而且:不是可用的)

伪元素(:在:在:一线:首字母)不受支持,因为它们选择文本的部分而不是元素。

部分支持伪类:

  • 不支持:*: first-of-type*: last-of-type*: nth-of-type而且*: nth-last-of-type(所有这些都使用元素名(例如。李:first-of-type),但不是用选择器)。
  • 支持:*: only-of-type
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 5.3支持通过JoliCode