Intereting Posts
PHP foreach loop x times и добавить placeholder Фоновое изображение темное или светлое? php / regex: "linkify" заголовки блога Сравните два массива в php Использование TIMESTAMP MySQL для непосредственного хранения временных меток Как использовать исключения PHP для определения перенаправления? как получить доступ к командной строке для xampp на окнах Переход от prefork MPM к рабочему MPM + php-fpm на ubuntu Использование массивов VS-объектов для хранения данных Изменение допустимых полей, необходимых для обратного вызова beforeFind? как установить php cookie с истечением срока действия, и если существует файл cookie, как перенаправить пользователя на другую страницу PHP / mySQL – регулярный пересчет контрольных значений, поскольку новые пользователи представляют свои данные PHP postback url google wallet IAP Интервалы перекрытия и количество перекрытий Почему мой файл preg_replace () в многострочном файле на Windows выходит из строя?

Symfony DomCrawler: найдите элемент с определенным значением атрибута

Я использую компонент DomCrawler: http://symfony.com/doc/current/components/dom_crawler.html

Я хотел бы, используя синтаксис CSS, получить элемент с определенным значением атрибута.

Вот код, который я использую:

$link = $crawler->filter('#product a[data-type="bla"]'); 

Кажется, что это работает, поскольку следующее возвращает 1:

 echo count($link); 

Однако я никогда не могу фильтровать дальше этого. Я не могу:

 $link->filter('img')->attr('src'); 

В результате появляется следующее сообщение об ошибке:

 The current node list is empty. 

Однако я точно знаю, что это не так.

Я пробовал синтаксис для других элементов, и это всегда одно и то же. Я делаю что-то неправильно или это невозможно (с CSS как синтаксис, а не xpath)

Related of "Symfony DomCrawler: найдите элемент с определенным значением атрибута"

Я не могу следовать вашей проблеме. Используя текущие версии разработки (а также версии 2.1.0 и 2.2.0) двух программных библиотек dom-crawler и css-selector , приведенный вами пример кода отлично подходит, учитывая следующий пример HTML:

 <?php use Symfony\Component\DomCrawler\Crawler; // require dependencies here $html = <<<'HTML' <!DOCTYPE html> <html> <body> <p class="message">Hello World!</p> <p>Hello Crawler!</p> <div id="product"> <a data-type="bla"> <img src="OK"> </a> </div> </body> </html> HTML; $crawler = new Crawler($html); $link = $crawler->filter('#product a[data-type="bla"]'); echo var_dump(count($link)); var_dump($link->filter('img')->attr('src')); 

Как вы можете видеть, это именно ваш код (только немного другой, но по существу нет), который дает следующий вывод дословно:

 int(1) string(2) "OK" 

Первая выходная строка – count() а вторая – значение атрибута src.

Вы запустили обновление для композитора? Вы дважды проверили вход?