Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
|
mlq [2022/02/06 00:19] a1 удалено |
— (текущий) | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Использование ====== | ||
| - | Данная библиотека помогает разобрать html документ не прибегая к регулярным выражениям, используя синтаксис селекторов подобный jQuery/css. | ||
| - | |||
| - | <code php> | ||
| - | 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 />"; | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | ====== Селекторы ====== | ||
| - | |||
| - | В комментарии добавляйте, чего бы хотелось видеть еще. И багрепорт по слелекторам. | ||
| - | |||
| - | Базовые: | ||
| - | |||
| - | * - все элементы | ||
| - | |||
| - | 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 у всех элементов набора | ||
| - | |||