2015-07-21 5 views
2

Я пытаюсь выяснить, как я могу выполнить код HTML и PHP из контроллера типа класса и сохранить результат в переменной для моделирования поведения некоторых MVC-ориентированных фреймворков, например:выполнить html и PHP-код в переменную

у меня есть переменный называются $ mystic_var, и я хочу использовать этот вар со странной функцией (я не знаю, какая функция), чтобы прочитать файл .php, выполнить его и сохранить результат в мои $ mystic_var

Предположим try.php имеет следующее содержание:

<html> 
<head></head> 
<body><?php echo "Hello world"; ?></body> 
</html> 

Затем я выполняю $ mystic_var = mystic_function ('try.php'); а затем, если я просматриваю $ mystic_var, это будет что-то вроде этого:

<html> 
<head></head> 
<body>Hello World</body> 
</html> 
+2

Мистическая функция 'include'. –

+0

Но Include будет включать только файл php, но не собирается его выполнять и сохраняет результаты –

+0

Ну, включая его _does_ выполнить его, но вам нужно будет использовать буферизацию вывода, чтобы результаты этого выполнения не заканчивались на вместо вашей переменной. –

ответ

0

Вы можете использовать выходной буфер

<?php ob_start(); ?> 
<html> 
<head></head> 
<body><?php echo "Hello world"; ?></body> 
</html> 
<?php $output = ob_get_clean(); ?> 
+0

Нужно использовать буферизацию вывода, но я не думаю, что OP хочет изменить целевой файл. –

-1

Если вы используете file_get_contents, вы получите весь текст из файла , но любой PHP-код внутри него не будет выполнен. Если вы напишите include, то PHP будет выполнен, но результаты включения файла будут на вашем экране. Вы можете использовать output buffering, чтобы сохранить содержимое включенного файла, а не сразу отображать его.

function mystic_function($php_file) { 
    ob_start(); 
    include $php_file; 
    return ob_get_flush(); 
} 

$mystic_var = mystic_function('try.php'); 

echo $mystic_var; 
// or if you want to see the html 
// echo htmlspecialchars($mystic_var); 
-1

Например у вас есть класс PHP с вашей функцией

PHP файл ..

<html> 
<head></head> 
<body>@[email protected]</body> //you should wrap strings you want to play with later into something you parse later 
</html> 

Ваш класс

class myclass{ 

    // and you have your php function that returns the file contents.. 

    public function readfile($a){ //$a will store file path & name 

     $contents = file_get_contents ($a); 
     return $contents; 

    } 

} 

Просмотров ...

$myclass = new myclass(); 

    $mystic_var = $myclass->readfile("file.html"); // file contents saved in variable 
    $replacewords = array(@[email protected],@[email protected]); 
    $replacewith = array("Hello Word","Some other stuff"); 

    $mystic_var = str_replace($replacewords, $replacewith); Don't echo inside file - parse it later. 

Примечание:

Функция PHP для чтения file = file_get_contents();

Объявить class => $ myclass = new myclass();

Функция доступа внутри класса => $ myclass-> readfile ("file.html");

Параметры анализа с помощью str_replace или другими методами

+0

'file_get_contents' будет читать файл, а не выполнять PHP. Таким образом, возвращаемое содержимое будет иметь ' 'вместо просто' Hello World'. –

+0

Вы правы - файл должен иметь переменные php, завернутые в что-то вроде @ $ hello_world @ , а затем проанализированный позже Я поправлю свой ответ – SergeDirect

Смежные вопросы