php – Symfony DomCrawler:查找具有特定属性值的元素

前端之家收集整理的这篇文章主要介绍了php – Symfony DomCrawler:查找具有特定属性值的元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用DomCrawler组件: http://symfony.com/doc/current/components/dom_crawler.html

我想使用CSS语法来获取具有特定属性值的元素.

这是我使用的代码

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

这似乎有效,如下所示:1:

  1. echo count($link);

但是,我永远不会比这更进一步的过滤.我不能做:

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

这将导致以下错误消息:

  1. The current node list is empty.

但是,我确信不知道.

我已经尝试了其他元素的语法,它总是一样的.我做错了什么或者这是不可能的(像css一样的语法,而不是xpath)

我不能跟随你的问题.使用两个软件库dom-crawler和 css-selector的当前开发版本(以及2.1.0和2.2.0版本),您提供的示例代码工作正常,考虑到以下示例HTML:
  1. <?PHP
  2. use Symfony\Component\DomCrawler\Crawler;
  3.  
  4. // require dependencies here
  5.  
  6. $html = <<<'HTML'
  7. <!DOCTYPE html>
  8. <html>
  9. <body>
  10. <p class="message">Hello World!</p>
  11. <p>Hello Crawler!</p>
  12. <div id="product">
  13. <a data-type="bla">
  14. <img src="OK">
  15. </a>
  16. </div>
  17. </body>
  18. </html>
  19. HTML;
  20.  
  21. $crawler = new Crawler($html);
  22.  
  23. $link = $crawler->filter('#product a[data-type="bla"]');
  24.  
  25. echo var_dump(count($link));
  26.  
  27. var_dump($link->filter('img')->attr('src'));

正如你可以看到,这正是你的代码(只是有点不同,但本质上不是),它给出了以下输出

  1. int(1)
  2. string(2) "OK"

第一个输出行是count(),第二个是src属性值.

你有运行作曲家更新吗?你仔细检查了输入吗?

猜你在找的PHP相关文章