SQLの窓 イラストAC フリー素材

2014年03月15日

【PHP】 <?=$value?> ではない変数埋め込み手法



一般のファイル( file_get_contents で読み込めるテキストファイル ) の中に、{$GLOBALS['text1']} というような形で埋め込んだ部分に、他のファイルの内容を埋め込む処理です。

PHP として単純に実装するならば、require や include すれば良いのですが、この方法だと、どのような外部テキストでも利用可能です。

PHPのコード

▼ parse.php
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

// ****************************************************************
// テキストファイルを読み込んで、そこに埋め込まれた php 変数を
// 実際の値に置き換えます
// ****************************************************************

// 元となる表示部分
$view_text = file_get_contents( "parse.htm" );

// 埋め込むテキストを外部ファイルより取得し、
// どのようなスコープでも適用できるように、グローバル変数にセット
$GLOBALS['text1']		= del_comment( file_get_contents( "text1.txt" ) );
$GLOBALS['text2']		= del_comment( file_get_contents( "text2.txt" ) );
$GLOBALS['description']	= del_comment( file_get_contents( "description.txt" ) );

// 展開処理
$view_text = str_replace('"', '\\"', $view_text );
// 上の処理は、以下の処理内で $view_text 内に " が存在するとまずいからです。
eval("\$view_text = \"$view_text\";");

// 出力( この PHP の画面表示処理 )
print $view_text;

// ****************************************************************
// コメント削除関数
// ****************************************************************
function del_comment( $str ) {

	// ------------------------------------------------------
	// 独自コメント削除
	// ------------------------------------------------------
	$str = mb_ereg_replace( "([^\n/]*)//[^\n]*\n", "\\1\n", $str );
	return $str;
}

?>


画面定義(PHPから読み込みます)

▼ parse.htm
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>記事構成のヒント</title>
<style type="text/css">
* {
	font-family: "メイリオ", Meiryo, "MS Pゴシック", sans-serif;
}

pre {
	font-size: 18px;
	width:400px;
	padding: 50px;
	border: 1px solid #cccccc;

	white-space: pre;
	white-space: pre-wrap;
	white-space: -pre-wrap;
	white-space: -o-pre-wrap;
	white-space: -moz-pre-wrap;
	white-space: -hp-pre-wrap;
	word-wrap: break-word;
}

h1 {
	width: 500px;
	font-size: 12px;
	line-height: 30px;
	border-style: solid;
	border-width: 1px;
	border-color: #9192A3;
	height: 30px;
	padding-left: 10px;
	background: url(h1.png) repeat-x 0px 0px;
}

</style>
</head>
<body>

<h1>プロローグ</h1>
<pre>
{$GLOBALS['text1']}
</pre>


<h1>ファーストコンタクト</h1>

<pre>
{$GLOBALS['text2']}
</pre>


<h1>※ 説明</h1>

<pre>
{$GLOBALS['description']}
</pre>
</body>
</html>


実行ページ

画面定義
テキスト1
テキスト2
説明テキスト



【PHPの最新記事】
posted by at 2014-03-15 15:48 | PHP | このブログの読者になる | 更新情報をチェックする