2014-12-27 106 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