变量失去其字符串属性

时间:2011-12-03 23:14:08

标签: php regex variables

我正在尝试获取变量值并将其添加到字符串中以输出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;

但是,由于某些原因,当我使用$ matches [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.

全部谢谢!

1 个答案:

答案 0 :(得分:0)

PHP不会执行字符串中的PHP。您所做的只是用一段PHP代码替换[IF TEST]...,这些代码将无法处理。您需要先处理PHP代码,然后将[IF TEST]...部分替换为该代码的结果。

尝试使用variable variables检查变量$TEST是否已设置,然后插入与该变量对应的相应文本。