人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

php smarty mysqlについて質問です。

while ($item = mysql_fetch_array($row)) {
$main[] = $item;
}
$smarty->assign('main', $main);

mysqlでテーブルの値を
{foreach from=$main key="key" item="value" name="test"}
上記でテンプレートにループ表示できるのですが、
ただそのまま値を表示するのではなく、取り出した値をPHPで処理(例えば取り出した文字列の値を置換するなど)してテンプレートでループ表示に入れるにはどうすればいいのでしょうか?


●質問者: numb08
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● だわかき
●150ポイント ベストアンサー

最初の whileループの中で置換などの文字列処理を行えばよいです。
たとえば文字列置換str_replaceなら、次のように使います。

while ($item = mysql_fetch_array($row)) {
 $item = str_replace(検索文字列, 置換文字列, $item);
 $main[] = $item;
}
$smarty->assign('main', $main);

numb08さんのコメント
ありがとうございました。とても勉強になりました。

2 ● rouge_2008
●150ポイント

変数の修飾子のreplaceを使うと良さそうです。

http://www.smarty.net/docsv2/ja/language.modifier.replace.tpl

{foreach from=$main key="key" item="value" name="test"}
{$key} : {$value|replace:"置換対象文字列":"置換後文字列"}
{/foreach}


複数の置換を行いたい場合は、パイプ「|」で連結します。
http://www.smarty.net/docsv2/ja/language.combining.modifiers.tpl

Chapter 6. 修飾子の連結
変数には複数の修飾子を適用できます。 それらは左から右に連結された順に適用されます。 各修飾子は、| (パイプ) キャラクタで連結しなければなりません。


{foreach from=$main key="key" item="value" name="test"}
{$key} : {$value|replace:"Mac":"Macintosh"|replace:"Win":"Windows"}
{/foreach}

※regex_replaceを利用すると、正規表現による置換も可能です。
http://www.smarty.net/docsv2/ja/language.modifier.regex.replace.tpl

※大文字変換やキャピタライズなども可能です。
・Chapter 5. 変数の修飾子
http://www.smarty.net/docsv2/ja/language.modifiers.tpl


numb08さんのコメント
こんな方法があるのですね。ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ