連想配列と一括置換
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テンプレート | 次へ フォーマット |