# symfony/css-selector

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/symfony-css-selector).**

7,435 stars · 43 forks · PHP · MIT

## Links

- GitHub: https://github.com/symfony/css-selector
- Homepage: https://symfony.com/css-selector
- awesome-repositories: https://awesome-repositories.com/repository/symfony-css-selector.md

## Topics

`component` `php` `symfony` `symfony-component`

## Description

This project is a PHP implementation of a CSS selector engine that transforms CSS selector strings into compatible XPath expressions for locating elements within documents. It serves as a converter and expression generator that maps CSS selection logic to the XPath query language.

The library processes selectors through a pipeline involving lexer-based tokenization and recursive descent parsing to create an abstract syntax tree. It utilizes pattern-matching logic to handle child and sibling relationships, translating CSS pseudo-classes and selectors into functional XPath logic.

These capabilities support document navigation and data extraction across HTML and XML structures, including applications in web scraping and automated browser testing.

## Tags

### Data & Databases

- [CSS and XPath Query Engines](https://awesome-repositories.com/f/data-databases/content-extraction/xpath-2-0-parsing/css-and-xpath-query-engines.md) — Provides a utility that transforms CSS selectors into XPath expressions for locating elements within documents. ([source](https://cdn.jsdelivr.net/gh/symfony/css-selector@8.2/README.md))
- [Web Document Parsing](https://awesome-repositories.com/f/data-databases/document-parsing-engines/web-document-parsing.md) — Facilitates navigating complex web page structures to locate target elements using CSS selection patterns.
- [Recursive Descent Parsers](https://awesome-repositories.com/f/data-databases/data-transformation-functions/recursive-processors/recursive-logic-implementations/recursive-descent-parsers.md) — Uses a recursive descent parsing engine to translate token streams into internal syntax trees.

### Part of an Awesome List

- [XML Parsing](https://awesome-repositories.com/f/awesome-lists/data/html-and-xml-parsing/xml-parsing.md) — Provides a way to query XML documents by translating CSS selectors into compatible XPath formats.

### Software Engineering & Architecture

- [CSS Selector Engines](https://awesome-repositories.com/f/software-engineering-architecture/syntax-query-definitions/css-selector-engines.md) — Provides a PHP-based CSS selector engine for querying and navigating DOM structures.
- [Abstract Syntax Tree Parsing](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-parsing.md) — Implements a transformation pipeline that converts parsed selector hierarchies into a structured tree representation.
- [String Tokenization](https://awesome-repositories.com/f/software-engineering-architecture/string-tokenization.md) — Utilizes a lexer to break raw CSS selector strings into a stream of tokens based on character patterns.

### Web Development

- [Web Scraping Selectors](https://awesome-repositories.com/f/web-development/web-scraping-selectors.md) — Enables high-precision element targeting for data extraction by converting CSS selectors to XPath.

### Programming Languages & Runtimes

- [Pattern Matching](https://awesome-repositories.com/f/programming-languages-runtimes/pattern-matching.md) — Employs pattern-matching logic to handle complex CSS selector combinations and relationships.
- [Query Expression Generators](https://awesome-repositories.com/f/programming-languages-runtimes/query-expression-generators.md) — Builds final XPath strings by concatenating mapped segments according to the document tree structure.
