PHP 動的なHTML(XHTML)の生成と保存

AICA研究室 國分 元樹
2009年11月10日
こんにちは、今日は変数を元に
動的にWEBページを生成して保存する方法を説明しますね。
<?php
	$title = "こんにちわ";
	$pageName = "TEST.html";
	
	$content = "<h1>Hello</h1><p>こんにちわ</p>";
	$content = stripslashes($content);

	
	$xhtml_template_base = <<<XML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<link href="./css/xxx.css" rel="stylesheet" type="text/css" />
	<script type="text/javascript" src="./js/xxxx.js" ></script>
	<title>$title</title>
</head>
<body>
	$content
</body>
</html>
XML;
?>
<?php
	if( !touch($pageName) )
	{
		die("ファイル生成エラー");
	}
	
	
	if (!($filePointer = fopen ($pageName, "w"))) {
		die ("ファイルが開けません。");
	}
	
	
	//ファイルロック
	flock ($filePointer, LOCK_EX);
	//ファイルの書き込み
	fputs ($filePointer, $xhtml_template_base);
	
	//ファイルロックの解除
	flock ($filePointer, LOCK_UN);
?>
このスクリプトを実行すると、
生成されたXHTMLを$pageNameの内容でサーバに保存することが出来ます。

解説ポイント

stripslashes 関数について
この関数は「\"」を「"」に「\'」を「'」変換する関数です。
なぜ必要なのか、と言うと
たとえば「<a href="./img/a.jpg" alt="テスト" />」などのタグが
$contentに挿入される場合、stripslashes関数を使用しない
<a href=\"./img/a.jpg\" alt=\"テスト\" />
とこのようになり、悲しい結果になります。
著者プロフィール

國分元樹

所属学科 : SE専攻科 3年

研究室では主にサーバーサイドとSEOを担当しています。