-
-
-
- Примеры
- API
Это старая версия документа!
Данная библиотека помогает разобрать 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 у всех элементов набора