2014-12-27 109 views
1

我有这样的代码异常在Symfony的2处理履带

try{ 

    $totalpages=$crawler->filter('.button-see-more'); 

     $totalpages=$totalpages->extract(array('data-total-pages'))[0]; 

     if($totalpages>0) 
      for($i=1;$i<=$totalpages;$i++) 
      { 
       $client->request('GET', 'http://www.daraz.pk/catalog/getproducts/?pathInfo=phones%2Fqmobile&page='.$i.'&YII_CSRF_TOKEN='.$CSRF, array(), array(), array(
        'HTTP_X-Requested-With' => 'XMLHttpRequest', 
       )); 
       echo $i.'th page: '.$client->getResponse()->getContent()."\r\n"; 
      } 


} 
catch (InvalidArgumentException $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

按照文档页面

$totalpages=$crawler->filter('.button-see-more'); 

,当过滤器不匹配anytyhing它应该抛出未抛出InvalidArgumentException,而是在控制台我得到

PHP注意:未定义偏移量:0在

我怎样才能抓住这个?

+0

PHP注意:未定义偏移量:0 .......................... ??? – 2014-12-27 18:31:55

+0

@SimoneNigro in Crawler.php – user3677331 2014-12-27 18:42:43

回答

2

无处文档中它指出,它抛出一个InvalidArgumentException如果它不匹配任何东西:

https://github.com/symfony/dom-crawler/blob/2.6/Crawler.php#L675

可能被抛出的唯一的例外是RuntimeException如果您尚未安装的Symfony的CssSelector。所以在你的情况下,这个异常将永远不会被抛出。

什么你,而不是寻找的是count()方法(这是在基SplObjectStorage类,所以你可以测试是否有任何与返回:

if ($totalpages->count() > 0) 

你也可以只做到

if ($totalpages->count()) 
+1

那么应该如何我处理这个,如果它不匹配任何东西? – user3677331 2014-12-27 18:41:21

+0

我更新了我的帖子与检查它的方式 – 2014-12-27 18:48:43