コンテンツの中にあるタグを抽出して置き換えるPHPコード.

2024.12.01

Logging

おはようございます.コンテンツの中にあるタグを抽出して置き換えるPHPコードを生成AIともに考えてもらいました.その第一弾の解としてPHPコードを記載します.因みにこのコードは、実際にワードプレス内に埋め込んでいて動いているコードになります.

因みにこの頃思うことは、基礎学習が一応終わっている人には生成AIは相性が良いと思っています.基礎が分かっていると生成AIの解答の良し悪しが分かるのでわざわざ実行して検証しなくても分かる場合が多いからです.

なので、基礎が分かっている方にはオススメ.たまに自分の知らないことを教えてくれるのでとても学習の効率は良いかなと思っています.

最後にPHPコードを記載します.

function wrapImagesWithLightbox($htmlContent) {

  $htmlContent = mb_convert_encoding($htmlContent, 'HTML-ENTITIES', 'UTF-8');
  
  $dom = new DOMDocument('1.1', 'UTF-8');
  // エラーを抑制してHTMLをロード
  @$dom->loadHTML($htmlContent, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
  
  $images = $dom->getElementsByTagName('img');

  // 画像タグを処理
  foreach ($images as $img) {
      $imgUrl = $img->getAttribute('src');

      // 新しい<a>タグを作成
      $a = $dom->createElement('a');
      $a->setAttribute('href', $imgUrl);
      $a->setAttribute('data-lightbox', 'image');

      // 元の<img>タグをクローンして追加
      $newImg = $img->cloneNode(true);

      // クラスがない場合でも付与
      if (!$newImg->hasAttribute('class')) {
          $newImg->setAttribute('class', 'img-fluid');
      }

      // 新しい<a>タグに画像を追加
      $a->appendChild($newImg);

      // 元の画像タグを<a>タグで置き換え
      $img->parentNode->replaceChild($a, $img);
  }

  // 変換後のHTMLを返す
  return $dom->saveHTML();
}

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

おすすめ, おはよう, くれる, ござい, コンテンツ, として, トテモ, なので, プレス, もらい, わざわざ, 分かっ, 分かる, 因みに, 埋め込ん, 終わっ, 置き換える,