0

我在寻找某些类/元素的页面上运行 php 脚本,如果类/元素不存在,我有时可能会收到“尝试获取非对象的属性”错误。

我想知道如何处理这个错误,以便我可以将自己的 null 值分配给变量作为 usingif语句,或者is_null似乎没有解决问题。

查看下面的代码,以更好地理解我的意思。

if($size = $elem->find('.size',0)->plaintext)由于类大小不存在,在线上会为“历史”元素抛出错误。

功能:获取信息

function getInfo($link){
   $page = file_get_html($link);        

   if($page){       
      $categoryLink = array();
      $categoryName = array();
      $categorySize = array();

      if($container = $page->find('.infoContainer',1)){

         foreach($container->find('.element') as $elem){

            if($link = $elem->find('a',0)->href){   
               $categoryLink[] = $link;
            }else{
               $categoryLink[] = "";
            }

            if($name = $elem->find('.name',0)->plaintext){
               $categoryName[] = $name;
            }else{
               $categoryName[] = "";
            }

            if($size = $elem->find('.size',0)->plaintext){
               $categorySize[] = $size;
            }else{
               $categorySize[] = 0;
            }
         }
      }
   }
}

www.example.com

<div class='infoContainer'>
   <div class='element'>
      <a href='www.example.com/physics'>
      <div class='name'>physics</div>
      <div class='size'>1000</div>
   </div>
   <div class='element'>
      <a href='www.example.com/math'>
      <div class='name'>math</div>
      <div class='size'>800</div>
   </div>
   <div class='element'>
      <a href='www.example.com/history'>
      <div class='name'>history</div>
   </div>

</div>

调用函数

getInfo("www.example.com");
4

1 回答 1

2

find在尝试访问其属性之前,您应该首先检查结果:

$result = $elem->find('foo', 0);
if ($result) {
    $something = $result->property;
}

这适用于 中的所有 3 个检查foreach,仅具有不同的参数名称等。

于 2012-06-30T16:38:50.233 回答