Инструменты пользователя

Инструменты сайта


mlq

Это старая версия документа!


Использование

Данная библиотека помогает разобрать html документ не прибегая к регулярным выражениям, используя синтаксис селекторов подобный jQuery/css.
 
Как использовать:
include('ml.php'); //подключаем класс
 
$ml=new mlq($source); // $source - исходный код html или xml
$images = $ml->find('div>img.productimg'); //делаем выборку используя селекторы
 
foreach($images as $image) { //перебор найденных объектов
     echo $images->name(); //имя тега
     echo $images->attr('src'); //аттрибут src
     echo $images->html(); //содержимое тега, включая html элементы
     echo (string)$images; //исходный код элемента
}
echo $images->attr('src'); //если нужен первый объект, можно обращатся непосредственно к группе объектов
////////////////////////////////////////////////////////////
как скачать с bash.im все цитаты с Котэ:
 
include('./lib/ml.php');
$mlq = new mlq(iconv('windows-1251','utf-8',file_get_contents('http://bash.im')));
 
//пример 1
foreach($mlq->select('div.quote:text(Кот)') as $quote) {
	if(!$quote->find('a.id')->length())
		continue;
	echo '<b>'.$quote->find('a.id')->text().'</b> '.$quote->find('div.text')->html()."<br /><br />";
}
 
//пример 2: от детей к родителю
foreach($mlq->select('div.quote div.text:text(Кот)') as $quote) {
	echo '<b>'.$quote->select('* < div.quote a:eq(3)')->text().'</b> '.$quote->html()."<br /><br />";
}

Селекторы

В комментарии добавляйте, чего бы хотелось видеть еще. И багрепорт по слелекторам.

Базовые: * - все элементы tagName - имя элемента .className - класс #idName - id элемента

Комбинированные: first, second - элементы из обоих селекторов outer inner - элементы потомки parent>children - элементы Непосредственные потомки children<parent - элементы родители prev+next - следующий элемент (внутри родителя) prev~next - все элементы следующие непосредственно (внутри родителя)

Аттрибуты: [name] - содержит аттрибут name [name=value] - содержит name совпадает с value [name!=value] - содержит name не совпадает с value [name^=value] - содержит name начинается с value [name$=value] - содержит name заканчивается на value [name*=value] - содержит name содержит подстроку value

Простые фильтры: :eq(n) - элемент с порядковым номером n

Фильтры по содержимому: :text("text") / :contains("text") - элемент, текст которого содержащит подстроку text :html("html") - элемент содержащий подстроку html :regexp("regexp") - элемент исходный код которого соответствует регулярному выржению regexp

Методы

Объект mlq именуется в дальнейшейм "набор элементов"

Функции выборки

mlq object select(string selector) - Возвращает набор элементов в соответствии с селектором selector

mlq object find(string selector) - Возвращает набор дочерних элементов в соответствии с селектором selector

mlq eq(n) - Возвращает элемент с порядковым номером n

Функции работы с данными

int length() - Возвращает количество элементов набора (ей же и проверяем не пустой ли набор)

string name() - Возвращает имя первого элемента.

string attr(string name) - Возвращает значение аттрибута name первого элемента.

string html() - Возвращает содержимое html первого элемента.

string text() - Возвращает текстовое содержимое первого элемента.

string number() - Возвращает текстовое содержимое c числовым фильтром

string next_text() - Возвращает текстовый блок, следующий непосредственно за элементом

boolean hasClass(string class) - возвращает true, если хотя бы один элемент набора имеет класс class

void addClass(string class) - добавляет класс class ко всем элементам набора

boolean removeClass(string class) - удаляет класс class у всех элементов набора

mlq.1555197911.txt.gz · Последние изменения: 2019/04/14 02:25 — a1