Problem Statement

I use drupal-7 in my website. I used to write articles and put images in that from google or from free image sources. Initially, I usually put image urls from their website only. i.e. I have img tag on my website, and source of image as external url of image from their website.

Example

My website: https://www.gyanbyte.com

Image tags (example image tag):
<img src="https://www.google.com/xyz">

Now, manytimes, external sources removed their images, and my website/page left with no image, which is not a good impression for my users. This article is to find those articles/blogs which have this issue.

Code

/**
 * See if a drupal node has images within my domain or not
 **/
function requireModification($nid) {
  $nd = node_load($nid);

  //read body of node
  $body = $nd->body['und'][0]['value'];

  $doc = new DOMDocument();
  $doc->loadHTML($body);

  //fetch all images in body of node
  $tags = $doc->getElementsByTagName('img');
  $imgArr = array();
  foreach ($tags as $tag) {
      //read src tag, source of image
      $imgSrc = $tag->getAttribute('src');

      //checking if image path is an http path and not in my domain
      if ((strpos($imgSrc, 'http') === 0) && (strpos($imgSrc, 'https://s3.amazonaws.com/images.MYDOMAIN.com') !== 0)) {
            return true;
      }
  }
  return false;
}

//My node type name
$node_type = "article";
$result = db_query("SELECT nid FROM node WHERE type = :nodeType ", array(':nodeType'=>$node_type));

$nids = array();
foreach ($result as $obj) {
  if (requireModification($obj->nid) === true) {
    $nids[] = $obj->nid;
  }
}

//printing node ids, which have images apart from my domain
print_r($nids);

Sample Output

(
    [0] => 16
    [1] => 26
    [2] => 2235
    [3] => 2236
    [4] => 2349
    [5] => 2350
    [6] => 2351
    [7] => 2352
    [8] => 2353
    [9] => 2354
    [10] => 2355
    [11] => 2356
    [12] => 2357
    [13] => 2358
    [14] => 2359
    [15] => 2360
    [16] => 2361
    [17] => 2362
    [18] => 2363
    [19] => 2364
    [20] => 2365
)

Drupal version

Drupal 7

See related articles