CssSelector组件
编辑本页CssSelector组件
CssSelector组件将CSS选择器转换为XPath表达式。
安装
1
$作曲家需要symfony/css-ob娱乐下载selector
请注意
如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。
使用
另请参阅
本文解释了如何在任何PHP应用程序中使用CssSelector特性作为独立组件。读了ob娱乐下载Symfony功能测试文章,以了解在创建Symfony测试时如何使用它。ob娱乐下载
为什么使用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
使用ob娱乐下载\组件\CssSelector\CssSelectorConverter;$转换器=新CssSelectorConverter ();var_dump ($转换器->toXPath ('div.item > h4 > a'));
输出如下:
1
descent -or-self::div[@class and contains(concat(' ',normalize-space(@class), ' '), ' item ')]/h4/a
你可以用这个表达,例如,DOMXPath或SimpleXMLElement查找文档中的元素。
提示
的爬虫:过滤器()方法使用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
.