連想配列と一括置換
HTMLテンプレートの文字を連想配列のデータで置き換える方法を考えて見ましょう。
次にデータを一括して置換する例を2つ...
| show.php | show.htm | |
<?php |
<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つ...
| ループで置換する | $html | |
// テンプレート文字の置換 |
<html> <head> <title>詳細表示</title> </head> <body> <table border="1"> <tr> <td>品名</td> <td>りんご</td> </tr> <tr> <td>価格</td> <td>1230</td> </tr> <tr> <td>備考</td> <td>ふじ 青森県産</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>1230</td> </tr> <tr> <td>備考</td> <td>ふじ 青森県産</td> </tr> </table> </body> </html> |
補足
| 正規表現のe修飾子を使って置換するときの注意 2007-12-13 |
preg_replace( )でe修飾子を使って置換するとき、文字列にシングルクォート(')、ダブルクォート(")、バックスラッシュ(\)があるとクォートされるので、元に戻すために
stripslashes( ) を使うと良いと思います。
// テンプレート文字の置換
$str = preg_quote("{data.*}");
$pattern = '/'.str_replace('\*', '([a-zA-Z0-9_\-]+)', $str).'/e';
$replacement = 'stripslashes($data["$1"])';
$html = preg_replace($pattern, $replacement, $html);
|
| 戻る 文字コード | HTMLテンプレート | 次へ フォーマット |