2012-01-17 3 views
3

ちょうどテンプレート文字列置換のための最良の方法が不思議です。 preg_replaceでPHPテンプレートの文字列を置き換える

preg_replace('/{%(\S+)%}/', 'bill', $tableOutput); 

、文字列がたくさんあります場合は交換する必要があり、関数が何度も文字列の数に依存呼び出されます置き換えることが必要です。文字列を一度見て、それに応じて置き換える方法があるかどうか疑問に思うだけですか?

おかげ

+1

は、[この](http://stackoverflow.com/questions/8846225/php-function-that-replaces-texts-with-variables/8846257#8846257)あなたが何をしたいですか? – Jon

+1

[PHPマニュアル](http://php.net/manual/en/function.preg-replace.php)によると、 'preg_replace'に配列引数を与えることができます。そう、いいえ。それは何度も呼び出されません。 – rdlowrey

+0

あなたは私が求めている答えです。ありがとう非常にありがとう – Bruce

答えて

4

preg_replaceの配列構文を使用して...?

preg_replace(array('/pattern1/', '/pattern2/'), array('replacement1', ...), ...) 
+0

しかし、あなたは実際に置換文字列を見つけることができ、置換と一致します。​​{%itemname%}、{%itemname%}を見つけ、配列['itemname']で一致するものを探して、値に置き換えますか? – Bruce

+1

はい、lookaheadとlookbehindを使ってマッチを置き換えることができます。 '(?<=\){%item%}(?= \ <\/td\>)'となります。捕捉グループを使用して細かい制御が必要な場合は、タグの内容をキャプチャし、 'preg_replace_callback'を使って置換することができます。 –

+1

もっと簡単な方法は、 'preg_replace'の置換文字列で逆参照$ 1を使うだけです。 –

関連する問題