drupal|September 04, 2017|2 min read

List all the Node ids which do not have images from my domain

TL;DR

Use a database query to scan node body fields for img tags with external URLs, identifying nodes that need image migration to your local domain.

List all the Node ids which do not have images from my domain

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):


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.

<h2>Code</h2>
```php
/**
 * 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

Related Posts

Drupal Helpful codes for database queries

Drupal Helpful codes for database queries

Being a drupal user from last around 5 years, I used to know small codes for…

Drupal&#58; How to block a user by email programatically

Drupal&#58; How to block a user by email programatically

Many times, while administering your drupal website, you must have encountered…

Drupal 7&#58; How to save a node programmatically and add an image field from a public URL

Drupal 7&#58; How to save a node programmatically and add an image field from a public URL

Note: I have public URLs of these images, which I want to save. return…

How to add alt attribute of images in all of my drupal articles or other content type

How to add alt attribute of images in all of my drupal articles or other content type

I have a custom content type, and there are around 2000 number of nodes in my…

How to trim Meta Description tag value generated by Metatag module, to max 160 characters

How to trim Meta Description tag value generated by Metatag module, to max 160 characters

I was using On page optimization of the article pages, and found that meta…

How to get all image tags from an html - php code

How to get all image tags from an html - php code

I wanted to fetch all image tags from a big html, and wanted to perform some…

Latest Posts

Claude Code Skills — Build a Better Engineering Workflow with AI-Powered Code Reviews, Security Scans, and More

Claude Code Skills — Build a Better Engineering Workflow with AI-Powered Code Reviews, Security Scans, and More

Most developers use Claude Code like a search engine — ask a question, get an…

Building an AI Voicebot for Visitor Check-In — A Practical Guide to Handling the Messy Parts

Building an AI Voicebot for Visitor Check-In — A Practical Guide to Handling the Messy Parts

Every office lobby has the same problem: a visitor walks in, nobody’s at the…

Server Security Best Practices — Complete Hardening Guide for Production Systems

Server Security Best Practices — Complete Hardening Guide for Production Systems

Every breach post-mortem tells the same story: an unpatched service, a…

Staff Engineer Study Plan for MAANG Interviews — The Complete 12-Week Roadmap

Staff Engineer Study Plan for MAANG Interviews — The Complete 12-Week Roadmap

If you’re a Senior Engineer (L5) preparing for Staff (L6+) roles at MAANG…

XSS and CSRF Explained — The Complete Guide with Real Attack Examples and Defenses

XSS and CSRF Explained — The Complete Guide with Real Attack Examples and Defenses

XSS and CSRF have been in the OWASP Top 10 for over a decade. They’re among the…

OWASP Top 10 (2021) — Every Vulnerability Explained with Code

OWASP Top 10 (2021) — Every Vulnerability Explained with Code

The OWASP Top 10 is the industry standard for web application security risks. If…