0

特定のクラス/要素を検索するページで php スクリプトを実行すると、クラス/要素が存在しない場合に「オブジェクト以外のプロパティを取得しようとしています」というエラーが表示されることがあります。

このエラーを処理する方法を知りたいので、自分の null 値を usingifステートメントとして変数に割り当てることができます。または、is_nullうまくいかないようです。

私の言いたいことをよりよく理解するために、以下のコードをチェックしてください。

if($size = $elem->find('.size',0)->plaintext)クラスサイズが存在しないため、「履歴」要素に対してエラーがスローされます。

関数:getInfo

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 に答える