$string = ($test === TRUE) ? 'lala' : 'falala';
Есть много способов сделать то, что, похоже, вы пытаетесь сделать (если я читаю то, что вы написали правильно).Выше это троичный.Если условие оценивается как true, то для $ string будет установлено значение 'lala', в противном случае будет установлено значение 'falala'.
Если вы буквально спрашиваете, что вы написали, используйте функцию eval ().Он принимает переданную строку и выполняет ее, как если бы это был PHP-код.Не включайте теги <?php ?>
.
function dropAllTables() {
// drop all tables in db
}
$string = 'dropAllTables();';
eval($string); // will execute the dropAllTables() function
[править]
Вы можете использовать следующее регулярное выражение, чтобы найти весь код php:
preg_match_all('/(<\?php )(.+?)( \?>)/', $string, $php_code, PREG_OFFSET_CAPTURE);
$ php_code будет массивом, где $ php_code [0] будет возвращать массив всех совпадений с тегами code + <?php ?>
.$ php_code [2] будет массивом только с кодом для выполнения.
Итак,
$string = "array has <?php count(array('lala')); ?> 1 member <?php count(array('falala')); ?>";
preg_match_all('/(<\?php )(.+?)( \?>)/', $string, $php_code, PREG_OFFSET_CAPTURE);
echo $php_code[0][0][0]; // <?php count(array('lala')); ?>
echo $php_code[2][0][0]; // count(array('lala'));
Это должно быть полезно для того, что вы хотите сделать.