データを加工して置換
連想配列にあるデータを加工してから置換してみましょう。
次にデータを一括して置換する例を2つは...
show.php | show.htm | |
<?php // テンプレートの読み込み $html = file_get_contents("show.htm"); // テンプレートの文字コード変換 |
<html> <head> <title>詳細表示</title> </head> <body> <table border="1"> <tr> <td>品名</td> <td>{data.name}</td> </tr> <tr> <td>価格</td> <td>{data.price}</td> </tr> <tr> <td>備考</td> <td>{data.remark}</td> </tr> </table> </body> </html> |
次にデータを一括して置換する例を2つは...
ループで置換する | show.htm | |
// テンプレート文字の置換 foreach ($data as $key => $val) { // < > などの特殊文字を < > に変換し置換します $html = str_replace("{data.$key}", htmlspecialchars($val), $html); // 数字を3桁ごとのカンマで区切に変換し置換します if (is_numeric($val)) $html = str_replace("{data.$key.number}", number_format($val), $html); else $html = str_replace("{data.$key.number}", htmlspecialchars($val), $html); // 特殊文字の変換後に改行を <br /> に変換して置換します $html = str_replace("{data.$key.br}", nl2br(htmlspecialchars($val)), $html); } |
<html> <head> <title>詳細表示</title> </head> <body> <table border="1"> <tr> <td>品名</td> <td>{data.name}</td> </tr> <tr> <td>価格</td> <td>{data.price.number}</td> </tr> <tr> <td>備考</td> <td>{data.remark.br}</td> </tr> </table> </body> </html> |
|
正規表現のe修飾子を使って置換する | $html | |
// テンプレート文字の置換 |
<html> <head> <title>詳細表示</title> </head> <body> <table border="1"> <tr> <td>品名</td> <td>りんご</td> </tr> <tr> <td>価格</td> <td>1,230</td> </tr> <tr> <td>備考</td> <td>ふじ<br /> 青森県産</td> </tr> </table> </body> </html> |
補足
正規表現のe修飾子を使って置換するときの注意 2007-12-13 |
preg_replace( )でe修飾子を使って置換するとき、文字列にシングルクォート(')、ダブルクォート(")、バックスラッシュ(\)があるとクォートされるので、元に戻すために
stripslashes( ) を使うと良いと思います。 // < > などの特殊文字を < > に変換し置換します $replacement = 'stripslashes(htmlspecialchars($data["$1"]))'; // 拡張子.numberは3桁ごとのカンマで区切に変換し置換します // 拡張子.brは改行を <br /> に変換して置換します $replacement = 'stripslashes($2($data["$1"]))'; |
戻る 連想配列 | HTMLテンプレート | 次へ 繰り返し |