Esta Es una Herramienta que permite convertir y manipular una cadena de texto con formato html en un objeto php.
Lo podemos hacer a travéz de composer:
"require": {
...
"elmijo/php-html-dom": "1.0"
...
}
$dom = new \PHPTools\PHPHtmlDom\PHPHtmlDom;
$dom->importHTML('http://php.net/');
$dom->importHTML('/ruta/del/archivo.txt');
$dom->importHTML('<div id="content-1"><ul><li class="item">item 1</li><li class="item">item 2</li></ul></div>');
if(!!$dom->importHTML('http://php.net/'))
{
...
//Si se logra importar el contenido devuelve TRUE
...
}
Este metodo permite instanciar uno o mas elementos dentro del contenido HTML importado, para instanciar dicho objeto solo tenemos que pasar un selector css.
$domlist = $dom->e('article');
//o
$domlist = $dom->e('.clase-de-los-elementos');
//o
$domlist = $dom->e('#id-del-elemento');
//o
$domlist = $dom->e('article > div > p:first-child');
El resultado es un objeto \PHPTools\PHPHtmlDom\Core\PHPHtmlDomList con una serie de metodos que te permitiran manejar el resultado.
Cada objeto \PHPTools\PHPHtmlDom\Core\PHPHtmlDomList esta compuestoṕor una serie d elementos \PHPTools\PHPHtmlDom\Core\PHPHtmlDomElement que tambien posee una serie de metodos para manipular dich objeto.
$dom = new \PHPTools\PHPHtmlDom\PHPHtmlDom;
if(!!$dom->importHTML('http://php.net/'))
{
var_dump($domlist->count());
$domlist = $dom->e('article');
$element = $domlist->eq(0);
$parentElem = $element->parent();
$find = $domlist->eq(0)->childs->find('p');
$find->each(function($inx,$ele){
echo sprintf("%s : %s","Tiene la clase item",$ele->hasclass('item'));
echo sprintf("%s : %s","Nombre de la Etiqueta",$ele->tagName);
echo sprintf("%s : %s","Texto con Forrmato",$ele->textFormatting);
});
}