title: Call to a member function getAttribute() on a non-object
body: <p>This is the <strong>error</strong> I got : </p>
  
  <pre><code>Fatal error: Call to a member function getAttribute() on a non-object 
  in /home/a4688869/public_html/random/index.php 
  on line 45
  </code></pre>
  
  <p>Here is a picture: <a href="http://prntscr.com/5rum9z" rel="nofollow">http://prntscr.com/5rum9z</a></p>
  
  <p>The function works for the first few, but breaks after a few pictures are displayed. Essentially the code generates a random html. I use cURL to get the html and then parse it with a function and then select an image from the site and then repeat the process until it I get 5 images.</p>
  
  <p><strong>My code</strong> </p>
  
  <pre><code>$original_string = '123456789abh';
  $random_string = get_random_string($original_string, 6);
  //Generates a random string of characters and returns the string
  function get_random_string($valid_chars, $length)
  {
  
      $random_string = ""; // start with an empty random string
      $num_valid_chars = strlen($valid_chars); // count the number of chars in the valid chars string so we know how many choices we have
  
      // repeat the steps until we've created a string of the right length
      for ($i = 0; $i &lt; $length; $i++)
      {
          $random_pick = mt_rand(1, $num_valid_chars); // pick a random number from 1 up to the number of valid chars
  
          // take the random character out of the string of valid chars
          // subtract 1 from $random_pick because strings are indexed starting at 0, and we started picking at 1
          $random_char = $valid_chars[$random_pick-1];
          $random_string .= $random_char; // add the randomly-chosen char onto the end of our string so far
      }
  
      return $random_string;
  }
  
  
  //Parses the random website and returns the image source
  function websearch($url){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      $html = curl_exec($ch);
      curl_close($ch);
  
      $dom = new DOMDocument;
      @$dom-&gt;loadHTML($html); // Had to supress errors
  
      $img = $dom-&gt;getElementsByTagName('img')-&gt;item(1); //Get just the second picture
      $src = $img-&gt;getAttribute('src'); //Get the source of the picture
  
      return $src;
  }
  </code></pre>
  
  <p>The part of the code that displays the html</p>
  
  <pre><code>for ($i = 0; $i &lt; $perpage; $i++){
              $random_string = get_random_string($original_string, 6);
              $src = websearch('http://prntscr.com/' . $random_string);
              while( $src == "http://i.imgur.com/8tdUI8N.png"){
                  $random_string = get_random_string($original_string, 6);
                  $src = websearch('http://prntscr.com/' . $random_string);
              }
                  ?&gt;
  
  &lt;img src="&lt;?php echo $src; ?&gt;"&gt;
  &lt;p&gt;&lt;a href="&lt;?php echo $src; ?&gt;"&gt;&lt;?php echo $src; ?&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;?php if ($i  != $perpage - 1){ // Only display the hr if there is another picture after it ?&gt;
  &lt;hr&gt;
  &lt;?php }}?&gt;
  </code></pre>