QuerySelector (seletores CSS) com PHP
Usando Inphinit framework é possível manipular DOM mais facilmente, além de poder converter DOM para outros formatos (DOM, XML, HTML, JSON e Arrays), você também pode usar seletores semelhantes aos do CSS, jQuery, document.querySelectorAll
diretamente com Inphinit\Experimental\Dom\Document
e Inphinit\Experimental\Dom\Selector
Ele é semelhante ao DOMXPath
(e é estendido desta classe), internamente ele trabalha os seus seletores como XPath, algo como div > p
será tratado como //div/p
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Dom\Document;
Route::set('GET', '/teste', function () {
$dom = new Document;
$dom->loadHTML('<html>
<head>
</head>
<body>
<div x=\'abc"def\'>Olá mundo!</div>
</body>
</html>');
$elementos = $dom->query('body > div');
var_dump($elementos);
});
Será retornado um DOMNodeList
com 2 elementos, assim:
object(DOMNodeList)#7 (1) {
["length"]=>
int(1)
}
Basta usar Document::loadHTMLFile
Se o
allow_url_fopen
estiver desabilitado nophp.ini
então você pode usar curl comDocument::loadHTML
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Dom\Document;
Route::set('GET', '/test', function () {
$dom = new Document;
$dom->loadHTMLFile('https://inphinit.github.io/pt/');
$elementos = $dom->query('body > div');
var_dump($elementos);
});
Será retornado um DOMNodeList
com 3 elementos, assim:
object(DOMNodeList)#7 (1) {
["length"]=>
int(2)
}
O Inphinit suporta um numero limitado de seletores, mas estamos melhorando isto conforme possível, os seletores suportados por enquanto são:
Seletor | Descrição | Nota |
---|---|---|
* |
Qualquer (selector universal) | - |
E |
Qualquer elemento do tipo E
|
- |
E.warning |
Retorna elementos E cujo o class é warning (seletor de classe) |
- |
E#myid |
Um elemento E com ID igual a myid (seletor de ID) |
- |
E F |
Retorna elementos F descendente de de elementos E
|
- |
E > F |
Retorna elementos F filho de de elementos E
|
- |
E + F |
Retorna elementos F imediatamente precedido por um elemento E
|
- |
E ~ F |
Retorna elementos F precedido por um E
|
- |
E[foo] |
Retorna elementos E com atributo foo
|
- |
E[foo="bar"] |
Retorna elementos E cujo valor do atributo foo é exatamente igual bar
|
- |
E[foo="bar" i] |
Para corresponder aos valores de atributo sem diferenciação de maiúsculas e minúsculas, o seletor de atributos pode incluir o identificador i antes do colchete de fechamento ]
|
também suportado por ^= , $= , *= e |=
|
E[foo~="bar"] |
Retorna elementos E cujo valor do atributo foo seja uma lista de valores separados por espaços em branco, um dos quais é exatamente igual a bar
|
- |
E[foo^="bar"] |
Retorna elementos E cujo valor do atributo foo começe exatamente com a string bar
|
- |
E[foo$="bar"] |
Retorna elementos E cujo valor do atributo foo termine exatamente com a string bar
|
- |
E[foo*="bar"] |
Retorna elementos E cujo valor do atributo foo contenha a substring bar
|
- |
E[foo|="en"] |
Retorna elementos E cujo valor do atributo foo possua um lista de valores separadas por hifens que comece com en- (a partir da esquerda) |
- |
E:empty |
Retorna elementos E que não possua filhos (incluindo text nodes) |
- |
E:lang(fr) |
Retorna elementos E cujo o idioma seja fr (equivale ao E[foo|="fr"] ) |
- |
E:first-child |
Retorna elementos E que seja o primeiro filho do elemento pai |
- |
E:last-child |
Retorna elementos E que seja o ultimo filho do elemento pai |
- |
E:nth-child(n) |
Retorna elementos E o n-ésimo filho do elemento pai |
suporta apenas algumas combinações, como: :nth-child(<a>n+<b>) , :nth-child(<a>n) , :nth-child(<a>) , :nth-child(even) , :nth-child(odd) (<a> e <b> representam os numeros na formula) |
E:contains(bar) |
Retorna elementos E cujo conteúdo tenha a substring bar
|
não padronizado |
E:contains-child(bar) |
Retorna elementos E cujo conteúdo tenha a substring bar somente em nodeTexts que sejam filhos diretos |
não padronizado |
Inphinit the PHP Framework is writed using PSR-1, PSR-2 and PSR-4, you can use Controllers, Views, Routes
- Getting Started
- About
- Performance
- Directory Structure
- Constants
- Routing
- Controllers
- Views
- Events
- HTTP Response
- HTTP Request
- HTTP Redirect
- HTTP Content Negotiation
- Storage and Files
- Rest
- Maintenance
- Regular Expression
- Response Cache
- DOM, XML, HTML, JSON and Arrays
- QuerySelector (CSS-selectors) with PHP
- Configuration
- Instalação
- Sobre
- Desempenho
- Estrutura das pastas
- Constantes
- Rotas
- Usando Controllers
- Usando Views
- Eventos
- Resposta HTTP
- Requisição HTTP
- Redirecionamento HTTP
- Negociação de Conteúdo HTTP
- Armazenamento e Arquivos
- Usando Rest
- Manutenção
- Expressão Regular
- Cache Resposta
- DOM, XML, HTML, JSON e Arrays
- QuerySelector (seletores-CSS) com PHP
- Configuração