Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

phpQuery php

phpQuery php

Всем привет. Сегодня я вам расскажу о замечательной библиотеке phpQuery которая позволяет работать со строкой html как с dom деревом. Сразу скажу что это сторонняя библиотека, то есть она не встроена в стандартные модули php, ее нужно отдельно скачивать и подключать. Кстати вот она

здесь

Преимущество данной библиотеки в том что она интуитивно понятна, так как сделана по аналогу известной библиотеки jquery для javascript. Всем названия методов и свойств для работы с dom деревом позаимствованы именно у нее(jquery). Поэтому если кто знаком с javascript и jquery, им не составит особого труда быстро освоить работу с данной библиотекой. Ну да ладно, поехали!

Первое что необходимо сделать, так подключить саму библиотеку:

require_once('phpQuery.php');

Затем для дальнейшей работы нам понадобится html код, возьмем его с главной страницы моего блога через функцию file_get_contents():

$html = file_get_contents('https://webfanat.com');

На выходе мы получаем html строку и записываем ее в переменную html. И теперь для того чтобы работать с данной строкой как с dom деревом необходимо создать объект phpQuery.

$dom = phpQuery::newDocument($html)

Здесь мы у класса phpQuery вызываем статический метод которому передаем нашу html строку и на выходе получаем объект phpQuery записанный в переменную dom.

Все теперь мы можем работать с dom деревом.

Для того чтобы выбрать какой либо элемент на странице достаточно воспользоваться методом find():

echo $dom->find('h1')->text();

Здесь мы вывели заголовок h1 с главной страницы моего блога. Заметьте мы воспользовались двумя методами find() и text().

find() - данный метод осуществляет выборку по переданному селектору элемента.

text() - выводит текст элемента

К примеру если мы хотим вывести содержащийся html код в элементе классом slide-bar нам достаточно прописать следующее:

echo $dom->find('.slide-bar')->html();

И нам выведется содержимое элемента с классом slide-bar. Однако заметьте что нам вывелся не сам html код, а содержащиеся элементы. Для того чтобы все таки мы получили html код, необходимо экранировать специальные символы.

echo htmlspecialchars($dom->find('.slide-bar')->html());

Для этого можно воспользоваться функцией htmlspecialchars().

При выборке мы можем пользоваться любыми псевдоселекторами которые поддерживает jquery.

echo $dom->find('a[class="color_red"]');

Здесь мы получим все элементы 'a' содержащие класс color_red. Если мы хотим посчитать их количество достаточно воспользоваться свойство length.

echo $dom->find('a[class="color_red"]')->length;

В итоге нам выведется количество ссылок с классом color_red.

Исходя из этого мы можем элементы ссылок перебрать и обработать:

$allA = $dom->find('a[class="color_red"]');
$i=1;
foreach ($allA as $el) {
    $a =pq($el);
    $a->attr('title', 'Cсылка '.$i);
    $i++;
}
echo $dom->find('a[class="color_red"]');

Здесь мы каждой ссылке с классом color_red присвоили атрибут title в качестве значения которого указали порядковый номер ссылки. Функция pq() в phpQuery это аналог функции $ в jquery.

В общем о возможностях данной библиотеки можно рассказывать еще очень много она также поддерживает методы append(), prepend(), remove(), addClass и т. д., по аналогу методов jquery.

Подробную документацию о данной библиотеке вы можете поискать на этом

ресурсе.

А на этом данная статья подошла к концу. Если остались вопросы пишите их в комментариях или группе

вк.

Ну а я с вами прощаюсь. Желаю вам удачи и успехов! Пока.

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

VasilStarl

04:40 11-07-2020

добрый день

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm