artack/dom-query

此软件包已废弃,不再维护。未建议替代软件包。
关于此软件包最新版本(0.3.0)的许可证信息不可用。

DOMQuery 是一个PHP库,允许轻松遍历和修改DOM。

0.3.0 2019-02-27 13:05 UTC

This package is auto-updated.

Last update: 2022-05-19 08:59:54 UTC


README

注意: 此存储库已存档,因此为只读。

DOMQuery

DOMQuery 是一个PHP库,允许轻松遍历和修改DOM。

安装

在您的 composer.json 中添加

{
 "require": {
     "artack/dom-query": "*"
 }
}

运行命令

$ php composer.phar update artack/dom-query

用法

树遍历

$q = DOMQuery::create('
    <div>
        <h1>Title</h1>
        <ul>
            <li class="first">first</li>
            <li class="second">second</li>
            <li class="last">last</li>
        </ul>
    </div>'
);

//output: 2
$q->getChildren()->count()

//output: 3
$q->find('li')->count() 

//output: <li class="first">first</li>
$q->find('li')->getFirst()->getHtml()

//output: <li class="last">last</li>
$q->find('li')->getLast()->getHtml()

//output: <li class="second">second</li>
$q->find('li')->filter('.second')->getHtml()

//output: <li class="second">second</li>
$q->find('li')->get(1)->getHtml()

//output: ul
$q->find('li')->getParent()->getName()

DOM 操作

//output: <div><h1>Title</h1><span>Text</span></div>
DOMQuery::create('<div><h1>Title</h1></div>')
    ->append('<span>Text</span>')
->getHtml()

//output: <div><span>Text</span><h1>Title</h1></div>
DOMQuery::create('<div><h1>Title</h1></div>')
    ->prepend('<span>Text</span>')
->getHtml()

//output: <div><h2>Title H2</h2></div>
DOMQuery::create('<div><h1>Title</h1></div>')
    ->find('h1')
        ->replace('<h2>Title H2</h2>')
        ->getParent()
->getHtml()

//output: <div><h2>New Title</h2></div>
DOMQuery::create('<div><h1>Title</h1></div>')
    ->find('h1')
        ->replaceInner('New Title')
        ->getParent()
->getHtml()

属性操作

//output: <img src="image.jpg" style="width:12px;" class="image">
DOMQuery::create('<img>')
    ->setAttribute('src', 'image.jpg')
    ->setStyle('width', '12px')
    ->addClass('image')
->getHtml()

HTML 输出

//output: <h1>Title</h1>
DOMQuery::create('<h1>Title</h1>')->getHtml()

//output: Title
DOMQuery::create('<h1>Title</h1>')->getInnerHtml()