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

2024年12月1日
文字数[1443文字] この記事は2分48秒で読めます.

おはようございます.コンテンツの中にあるタグを抽出して置き換える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();
}

明日へ続く