2011-12-03 6 views
-1

変数値を取得し、html要素を出力するために文字列に追加しようとしています。ここに私のコードは次のとおりです。変数が文字列プロパティを失う

// String 
$str = 'Some validations [IF TEST]<a href="text.html">firstValue</a>[ELSEIF TEST1]secondValue[/IF] in [IF OK]thirdValue[/IF] end of string.'; 

// Regex 
$do = preg_match_all("/\[IF (.*?)\](.*?)(\[\/IF\]|\[ELSEIF(.*?)\](.*?)\[\/IF\])/i", $str, $matches, PREG_SET_ORDER); 
$str = str_replace("[IF ". $matches[0][1] ."]", "<?php if($". $matches[0][1] ."){ echo('".$matches[0][2]."');} ?>", $str); 
echo $str; 

しかし、いくつかの理由のために、私は$マッチを使用するときに[0] [2]、それはブラウザでこの結果を与える私の文字列を破る:

Some validations firstValue');} ?>firstValue[ELSEIF TEST1]secondValue[/IF] in [IF OK]thirdValue[/IF] end of string. 

とこれはソース:

Some validations <?php if($TEST){ echo('<a href="text.html">firstValue</a>');} ?><a href="text.html">firstValue</a>[ELSEIF TEST1]secondValue[/IF] in [IF OK]thirdValue[/IF] end of string. 

ありがとうございます!

+0

答えを受け入れる:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

答えて

0

PHPはあなたの文字列の中にあるPHPを実行しません。あなたがしているのは、[IF TEST]...を処理されないPHPコードのブロックに置き換えることだけです。 PHPコードを最初に処理してから、[IF TEST]...セクションをそのコードの結果に置き換える必要があります。

variable variablesを使用して、変数$TESTが設定されているかどうかを確認し、その変数に対応する適切なテキストを挿入してください。

+0

ありがとう...私は結局間違った方法を行っていたと思う。正規表現ではなく文字列操作を調べます:) – Estarius

関連する問題