[11:47]
[🔒]
✪
Статья
DiDOM - простая и быстрая библиотека для парсинга HTML.
Категории: Программир.; Интернет, сети, web;
use DiDom\Document;
$document = new Document('http://www.news.com/', true);
$posts = $document->find('.post');
foreach($posts as $post) {
echo $post->text(), "\n";
}
// в первом параметре передается строка с HTML
$document = new Document($html);
// путь к файлу
$document = new Document('page.html', true);
// или URL
$document = new Document('http://www.example.com/', true);
$document = new Document();
$document->loadHtml($html);
$document->loadHtmlFile('page.html');
$document->loadHtmlFile('http://www.example.com/');
use DiDom\Query;
...
// CSS-селектор
// XPath-выражение
$posts = $document->find("//div[contains(@class, 'post')]", Query::TYPE_XPATH);
if ($document->has('.post')) {
// код }
$elements = $document->find('.post');
if (count($elements = $document->find('.post')) > 0) {
// все ссылки
$document->find('a');
// любой элемент с id = "foo" и классом "bar"
$document->find('#foo.bar');
// любой элемент, у которого есть атрибут "name"
$document->find('[name]');
// эквивалентно
$document->find('*[name]');
// поле ввода с именем "foo"
$document->find('input[name=foo]');
$document->find('input[name=\'foo\']');
$document->find('input[name="foo"]');
// поле ввода, название которого НЕ равно "foo"
$document->find('input[name!="foo"]');
// любой элемент, у которого есть атрибут,
// начинающийся с "data-" и равный "foo"
$document->find('*[^data-=foo]');
// все ссылки, у которых адрес начинается с https
$document->find('a[href^=https]');
// все изображения с расширением png
$document->find('img[src$=png]');
// все ссылки, содержащие в своем адресе строку "example.com"
$document->find('a[href*=example.com]');
// все ссылки, содержащие в атрибуте data-foo значение bar отделенное пробелом
$document->find('a[data-foo~=bar]');
// текст всех ссылок с классом "foo"
$document->find('a.foo::text');
// адрес и текст подсказки всех полей с классом "bar"
$document->find('a.bar::attr(href|title)');
// все ссылки, которые являются прямыми потомками текущего элемента
$element->find('> a');
echo $posts[0]->html();
use DiDom\Element;
$element = new Element('span', 'Hello');
// выведет "Hello"
echo $element->html();
$attributes = ['name' => 'description', 'placeholder' => 'Enter description of item'];
$element = new Element('textarea', 'Text', $attributes);
use DOMElement;
$domElement = new DOMElement('span', 'Hello');
$element = new Element($domElement);
$element = $document->createElement('span', 'Hello');
$element = $document->createElementBySelector('div.block', 'Foo', ['id' => '#content']);
$item = $document->find('ul.menu > li')[1];
// предыдущий элемент
var_dump($item->previousSibling());
// следующий элемент
var_dump($item->nextSibling());
$html = 'ul>
li>Fooclass="pl-ent">li>
li>Barclass="pl-ent">li>
li>Bazclass="pl-ent">li>
class="pl-ent">ul>';
$list = $document->first('ul');
// string(3) "Baz"
var_dump($item->child(2)->text());
// string(3) "Foo"
var_dump($item->firstChild()->text());
var_dump($item->lastChild()->text());
// array(3) { ... }
var_dump($item->children());
$element = $document->first('input[name=email]');
$document2 = $element->getDocument();
// bool(true)
var_dump($document->is($document2));
if ($element->hasAttribute('name')) {
if (isset($element->name)) {
$element = new Element('span', 'hello');
$element2 = new Element('span', 'hello');
var_dump($element->is($element));
// bool(false)
var_dump($element->is($element2));
$list = new Element('ul');
$item = new Element('li', 'Item 1');
$list->appendChild($item);
$items = [new Element('li', 'Item 2'),
new Element('li', 'Item 3'),];
$list->appendChild($items);
$title = new Element('title', 'foo');
$document->first('title')->replace($title);
// ничего не выйдет
$document->first('head')->first('title')->replace($title);
// а вот так да
$document->first('head title')->replace($title);
$document->first('head')->first('title')->remove();
$document->first('head title')->remove();
$xpath = Query::compile('h2');
$compiled = Query::getCompiled();
// array('h2' => '//h2')
var_dump($compiled);
$document->preserveWhiteSpace();
$document->loadXml($xml);
// выведет количество ссылок в документе
echo $document->count('a');
Чтобы написать комментарий нужно, зарегистрироваться
Голосования и тесты: 0