https://github.com/amal/cdom
O CDOM é um componente html/xml/bbcode html/bbcode. Ele fornece um analisador para a linguagem de marcação do tipo HTML na estrutura do tipo DOM e apoia a pesquisa através do DOM com força total dos seletores CSS3 e quaisquer manipulações. O CDOM é baseado no PHP Simple HTML DOM Parser e licenciado sob a licença do MIT.
Principais características e possibilidades:
O CDOM é escrito para Anizoptera CMF por Amal Samally (Amal.Samally em gmail.com)
O uso do CDOM é muito simples. A maioria dos métodos corresponde aos do jQuery. Todos os métodos são comentados detalhados. Seu IDE pode facilitar a conclusão automática, se suportar phpdoc. E você pode ver exemplos de uso abaixo. A documentação completa será em breve.
Como obter elementos HTML?
// Create DOM from string
$ html = file_get_contents ( ' http://www.google.com/ ' );
$ dom = CDom:: fromString ( $ html );
// Find all images
foreach ( $ dom -> find ( ' img ' ) as $ element ) {
echo $ element -> src . "n" ;
}
// Find all links
foreach ( $ dom -> find ( ' a ' ) as $ element ) {
echo $ element -> href . "n" ;
}Como modificar elementos HTML?
// Create DOM from string
$ dom = CDom:: fromString ( ' <div id="hello">Hello</div><div id="world">World</div> ' );
// Add class to the second div (first last child)
$ dom -> find ( ' div:nth-last-child(1) ' )-> class = ' bar ' ;
// Change text of first div
$ dom -> find ( ' div[id=hello] ' )-> text ( ' foo ' );
echo $ dom . "n" ; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>Extraia o conteúdo do HTML
$ html = file_get_contents ( ' http://www.google.com/ ' );
// Dump correctly formatted contents without tags from HTML
echo CDom:: fromString ( $ html )-> text () . "n" ;Use CDOM para trabalhar com BBCode simples
$ bbMarkup = <<<'TXT'
[quote]
[b]Bold [u]Underline[/u][/b]
[i]Italic
[/quote]
[img width=12 height=16]url[/img]
TXT;
CDom:: $ bracketOpen = ' [ ' ;
CDom:: $ bracketClose = ' ] ' ;
CDom:: $ blockTags = array ( ' quote ' => true );
CDom:: $ inlineTags = array ( ' b ' => true , ' i ' => true , ' u ' => true );
CDom:: $ selfClosingTags = array ();
// Create DOM from string
$ dom = CDom:: fromString ( $ bbMarkup );
// Find [b]
$ b = $ dom -> find ( ' b ' );
$ expected = ' [b]Bold [u]Underline[/u][/b] ' ;
echo $ b -> outerHtml () . "n" ; // Output: [b]Bold [u]Underline[/u][/b]
// Change [img] width
$ img = $ dom -> lastChild ;
$ img -> width = 450 ;
echo $ img -> outerHtml () . "n" ; // Output: [img width="450" height="16"]url[/img]
// Convert [b] to html
CDom:: $ bracketOpen = ' < ' ;
CDom:: $ bracketClose = ' > ' ;
echo $ b -> outerHtml () . "n" ; // Output: <b>Bold <u>Underline</u></b>