同じ値を持つように見える2つのPHP変数、関数から生成される$ dynamic、および単一引用符で囲まれたテキストである$ testがあります。PHP変数を「プレーン」テキストとして評価する
私はそれらの値を印刷するとき、それらは同じですが、$ダイナミックは正規表現関数で失敗します。
PHPの文字列「ではないダイナミックな」以下は、ちょうど昔ながらのテキスト
$test = 'username'; //Evaluates OK
die($test.' '.$dynamic); //Produces: username username
を作るためにどのような方法がありますが関数で、$パターンが問題です。これは実際は以前の質問からですが、私はそれ以来、$ patternの評価に問題を絞り込んできました。これはpreg_replace_callback以外の他の関数の問題でもあるようです。
public function output() {
if (!file_exists($this->file)) {
return "Error loading template file ($this->file).<br />";
}
$output = file_get_contents($this->file);
foreach ($this->values as $key => $value) {
$tagToReplace = "[@$key]";
$output = str_replace($tagToReplace, $value, $output);
$dynamic = preg_quote($key);
$test = 'username';
$pattern = '%\[if @'.$test.'\](.*?)\[/if\]%'; // produces: %\[if @username\](.*?)\[/if\]%
$output = preg_replace_callback($pattern, array($this, 'if_replace'), $output);
}
return $output;
}
"$ dynamicが正規表現関数で失敗する"とはどういう意味ですか?問題を説明する例を追加してください。 –
期待される出力を提供してください –
この機能は見えますか? – Drakekin