Переменная теряет свое строковое свойство - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь получить значение переменной и добавить его в строку для вывода 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;

Однако по некоторым причинам, когда я использую $ match [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 голосов
/ 04 декабря 2011

PHP не собирается выполнять PHP, который находится внутри вашей строки.Все, что вы делаете, это заменяете [IF TEST]... блоком кода PHP, который не будет обработан.Сначала необходимо обработать код PHP, а затем заменить секцию [IF TEST]... результатом этого кода.

Попробуйте использовать переменные переменные , чтобы проверить, установлена ​​ли переменная $TEST изатем вставьте соответствующий текст, соответствующий этой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...