Seletores CSS em PHP

Aprenda como consultar documentos usando seletores semelhantes a CSS com Inphinit\Dom\Document e DOMDocument.

Utilizando seletores

É possível selecionar elementos em um documento externo, por exemplo:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Sample</title> </head> <body> <div>Foo</div> <div>Bar</div> <div id="test">test</div> <div>Baz</div> </body> </html>

Por exemplo, o seletor body > div tem como alvo <div> elementos que são filhos diretos do <body> elemento:

use Inphinit\Dom\Document; $handle = new Document(Document::HTML); $handle->load('document.html'); $elements = $handle->selector()->all('body > div'); var_dump($elements);

Selecionando um elemento por ID:

$element = $handle->selector()->first('#test'); var_dump($element);

Utilizando com DOMDocument

Também é possivel usar os seletores com uma instancia da classe nativa do PHP DOMDocument, exemplo:

use Inphinit\Dom\Selector; $doc = new DOMDocument; $doc->load('examples/book.xml'); $selector = new Selector($doc); // Get the first element that matches the selector $element = $selector->first('ul li'); var_dump($element); // Returns a DOMNodeList of elements that match the selector $elements = $selector->all('ul li'); forrach ($elements as $element) { var_dump($element); }

Métodos

Método Descrição
all(string $selector): DOMNodeList Retorna todos os elementos que correspondem ao seletor.
first(string $selector): DOMNode|null Retorna o primeiro elemento que corresponde ao seletor ou, null se nenhum elemento for encontrado, retorna o valor especificado.
count(string $selector): int Retorna o número total de elementos que correspondem ao seletor.

Seletores suportados

Seletor Descrição Observação
* Qualquer elemento (seletor universal) -
E Um elemento do tipo E -
E.warning Um E elemento cuja classe é warning (seletor de classe) -
E#myid Um E elemento com ID igual a myid (seletor de ID) -
E F Um F elemento descendente de outro E elemento (combinador descendente) -
E > F Um F elemento filho de outro E elemento (combinador filho) -
E + F Um F elemento imediatamente precedido por um E elemento -
E ~ F Um F elemento precedido por um E elemento -
E[foo] Um E elemento com um foo atributo -
E[foo="bar"] Um E elemento cujo foo valor de atributo é exatamente igual a bar -
E[foo="bar" i] Para corresponder valores de atributos sem distinção entre maiúsculas e minúsculas, o seletor de atributos pode incluir o identificador i antes do colchete de fechamento.] Também suporte por ^=, $=, *= e |=
E[foo~="bar"] Um E elemento cujo foo valor de atributo é uma lista de valores separados por espaços em branco, sendo que um deles é exatamente igual a bar -
E[foo^="bar"] Um E elemento cujo foo valor de atributo começa exatamente com a string bar -
E[foo$="bar"] Um E elemento cujo foo valor de atributo termina exatamente com a string bar -
E[foo*="bar"] Um E elemento cujo foo valor de atributo contém a substring bar -
E[foo|="en"] Um E elemento cujo foo atributo possui uma lista de valores separados por hífen, começando (da esquerda) com "en". -
E:empty Um E elemento que não possui filhos (incluindo nós de texto) -
E:lang(fr) Um elemento de tipo E na linguagem fr -
E:first-child Um E elemento, primeiro filho de seu pai. -
E:last-child Um E elemento, último filho de seu pai. -
E:nth-child(n) Um E elemento, o n-ésimo filho de seu pai. Apenas algumas combinações são suportadas, como: :nth-child(<a>n+<b>), :nth-child(<a>n), :nth-child(<a>), :nth-child(even), :nth-child(odd) (<a> e <b> representam números nas formulas)
E:contains(bar) Um E elemento cujo conteúdo contém a substring bar não padrão
E:contains-child(bar) Um E elemento cujo conteúdo contém a substring bar apenas em nodeTexts que são filhos diretos. não padrão
Página inicial
Apoie com uma estrela no GitHub