Новое в Symfony 2.6: Нарезка узлов с DomCrawler

Компонент DomCrawler облегчает DOM навигацию для HTML и XML документов. Хотя это обычно используется для разработки функциональных тестов в приложениях Symfony2, он также может быть использован, чтобы отфильтровать содержимое, как показано в рамках проекта Goutte.

DomCrawler предоставляет несколько методов для фильтрации узла: filter(), reduce() и each(). По состоянию на Symfony 2.6, вы можете использовать другой удобный метод называется slice().

Как и в array_slice (), новая  функция slice($offset, $length)  возвращает последовательность элементов, с заданным смещением и длиной. Рассмотрим, например, код, необходимый для извлечения текстового содержимого некоторых элементов <li>  из элемента #nav-menu:

use Symfony\Component\DomCrawler\Crawler;

$crawler = new Crawler(' ... some HTML content ... ');

$crawler->filter('#nav-menu li')->each(function ($node, $i) {
    if ($i >= 2 && $i <= 7) {
        return $node->text();
    }
});

В Symfony 2.6, предыдущий код фильтрации узелов становится намного проще и элегантней:

$crawler->filter('#nav-menu li')->slice(2, 7)->each(function ($node, $i) {
    return $node->text();
});

Добавить комментарий

Ваш адрес email не будет опубликован.

17 + 17 =