小金井にあるWEB制作会社の備忘録

MEMORANDUM

PHPの「preg_replace」関数を使って特定のHTMLタグ(要素を含む)を削除

HTMLファイルを外部読み込する必要がある場合などで、不要なタグを削除して読み込みたい時に指定のタグを削除して取り込む方法をメモ。

PHP

$html = '
<html>
<head>
<meta charset="UTF-8">
<title>東京都小金井市のホームページ制作会社|株式会社衆</title>
<meta name="description" content="東京都小金井市にてホームページの作成・システム開発などWEBで実現可能な制作業務を行っています。多彩なパートナーシップでホームページ以外の制作(パンフレットや動画、イラスト等)もご相談可能。メールまたはお電話にてお問合せください。">
<link rel="canonical" href="https://web.syu-u.com/">
<link href="css/style.css" rel="stylesheet" type="text/css">
<link href="css/sp.css" rel="stylesheet" type="text/css">
<script src="//kit.fontawesome.com/c985baa937.js" crossorigin="anonymous"></script>
<script type="application/ld+json">
{
	"@context" : "http://schema.org",
	"@type" : "WebPage",
	"name" : "東京都小金井市のホームページ制作会社|株式会社衆",
	"description" : "東京都小金井市にてホームページの作成・システム開発などWEBで実現可能な制作業務を行っています。多彩なパートナーシップでホームページ以外の制作(パンフレットや動画、イラスト等)もご相談可能。メールまたはお電話にてお問合せください。",
	"url" : "https://web.syu-u.com/"
}
</script>
</head>
<body>
<aside class="contactArea">
<h2 class="heading">まずはお気軽にお問い合わせを。</h2>
<div>ホームページ制作に関する質問・ご相談は下記の電話番号または、お問い合わせフォーム(24時間受付中)より受け付けております。<br>
ご相談だけでも構いません。まずはお気軽にお問い合わせください。</div>
<div class="tel en icon-tel"><span>042-316-1895</span></div>
<div class="time">電話受付 10:00~17:00(平日のみ)</div>
<div class="btnMore"><a href="/contact/">お問い合わせフォーム</a></div>
</aside>
</body>
</html>
';

$ary = array('/<script.*?>.*?<\/script>/is', '/<link.*?>/', '/<div>.*?<\/div>/is');
$html = preg_replace($ary, '', $html);

//実行結果
<html>
<head>
<meta charset="UTF-8">
<title>東京都小金井市のホームページ制作会社|株式会社衆</title>
<meta name="description" content="東京都小金井市にてホームページの作成・システム開発などWEBで実現可能な制作業務を行っています。多彩なパートナーシップでホームページ以外の制作(パンフレットや動画、イラスト等)もご相談可能。メールまたはお電話にてお問合せください。">
</head>
<body>
<aside class="contactArea">
<h2 class="heading">まずはお気軽にお問い合わせを。</h2>
<div class="tel en icon-tel"><span>042-316-1895</span></div>
<div class="time">電話受付 10:00~17:00(平日のみ)</div>
<div class="btnMore"><a href="/contact/">お問い合わせフォーム</a></div
</aside>
</body>
</html>

参考例は当サイトのトップページのソースの一部。
今回の指定では<script>タグ関連のプログラム、<link>タグ、<div>タグの項目はクラス設定の無いもののみ削除されています。
divタグにクラスを含めたものを削除する場合は「<div.*?>.*?<\/div>/is」にする。
※設定のあるもの、無いものの両方を指定する場合は、両方の記載をする。

今回使用しているパターン(修飾)に関する説明は下記を参照。

パターン修飾子

パターン説明
i大文字にも小文字にもマッチする
s改行、改行コードを無視してマッチする

パターン

パターン説明
.任意の一文字
*前の文字を0個以上繰り返し
?後の指定文字が来るまで最小マッチ