どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付いたします

Simple HTML DOM Parser でコメントアウト部分を消す方法


こんにちは!
Webシステム部の長谷です。

今回は、PHPでHTMLを解析することができる「Simple HTML DOM Parser」を使用して、
HTMLのコメント部分(<!-- -->)を除去する方法をご紹介します。

というのも、とある案件にてSimple HTML DOM Parserを使用して
HTMLの最適化を行っていたのですが、
その際、使い方など色々と調査をしていたのですが、
コメントに関しては触れられている方があまりいなかった(あまり使わないから?)ので
備忘録も兼ねてここに残しておこうと思った次第であります。

Simple HTML DOM Parserの導入

ライブラリのダウンロード

Simple HTML DOM Parser

マニュアル

PHP Simple HTML DOM Parser Manual

対象HTMLファイル

comment_out.html

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>株式会社ビヨンド</title>
</head>
<body>
	<!-- 会社名 -->
	<h1>株式会社ビヨンド</h1>

	<!-- ビヨンドの企業理念 -->
	<h2>「共に創り支え続ける」</h2>
	<h3>私たちビヨンドの仕事は、ITを通じて新しい価値を創造する人々を支えること。</h3>
	<p>それは決して華々しい仕事ではないが、ユーザーがより快適に・楽しく生活するためにはなくてはならない存在だと考えます。
	単なるシステムサービスのみではなく、創り手のビジネスチャンスを広げるための"人の輪"や"情報"を提供することにより、
	互いに成長できる関係を長期的に作りあげることを使命とします。</p>

	<!--
		上記の「会社名」「ビヨンドの企業理念」のように一行のコメントはもちろん
		このように複数行に渡って
		記述されているコメントも
		削除することが可能です
	-->
</body>
</html>

実行PHPの作成

ライブラリを読み込む

require_once 'simple_html_dom.php';

対象HTMLを読み込む

$html = file_get_html('comment_out.html');

コメント部分を抽出して除去

foreach ($html->find("comment") as $comment) {
	$comment->outertext = "";
}

$html->find("comment") でコメント部分を配列で抽出でき、
$comment->outertext = ""; で要素を空文字(除去)にできます。

保存する

$body = $html->save();
$html->clear();

ファイルに書き込む

file_put_contents("comment_out_delete.html", $body);

完成したPHPファイル

<?php
// ライブラリを読み込む
require_once 'simple_html_dom.php';

// 対象HTMLを読み込む
$html = file_get_html('comment_out.html');

// コメント部分を抽出して除去
foreach ($html->find("comment") as $comment) {
	$comment->outertext = "";
}

// 保存する
$body = $html->save();
$html->clear();

// ファイルに書き込む
file_put_contents("comment_out_delete.html", $body);
?>

PHP実行後のHTMLファイル

comment_out_delete.html

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>株式会社ビヨンド</title>
</head>
<body>
	
	<h1>株式会社ビヨンド</h1>

	
	<h2>「共に創り支え続ける」</h2>
	<h3>私たちビヨンドの仕事は、ITを通じて新しい価値を創造する人々を支えること。</h3>
	<p>それは決して華々しい仕事ではないが、ユーザーがより快適に・楽しく生活するためにはなくてはならない存在だと考えます。
	単なるシステムサービスのみではなく、創り手のビジネスチャンスを広げるための"人の輪"や"情報"を提供することにより、
	互いに成長できる関係を長期的に作りあげることを使命とします。</p>

	
</body>
</html>

正常にコメントが除去されましたね。
以上となります。


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.