Вывод PHP-файла в строку

StalkerClasses

Новичок
Есть PHP-файл, где есть PHP и HTML код.
Можно как-то сделать его include в переменную?

Ищу альтернативу вот этому:
Код:
ob_start();
    require('test.php');
$content = ob_get_clean();
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Что должно быть в строке? Результат обработки, то есть данные после парсинга исходника, или просто исходник? И для чего такое нужно?
 

StalkerClasses

Новичок
Нужны данные после парсинга исходного кода (как обычный require в обычных php-скриптах).

Опишу суть проблемы.

Обычно если Вы работаете с классами весь Ваш вывод собирается в строку и в одном месте делается print $content (условно говоря) - т.е. если где то до print будет вывод служебной страницы с ошибкойили и exit() - то Вы не увидите собираемого $content и будет выведена только страница ошибки;

А есть ситуация где HTML и PHP код идет в перемешку. Если у Вас в данном случае где-то будет вызов страницы с ошибкой и exit() - то вы увидите весь вывод что был до вызова этой ошибки. Т.е.

<html>
<body>
выводимая страница
...

<html>
<body>
Страница с ошибкой (произошла ошибка №...)
</body>
</html>
 

StalkerClasses

Новичок
Раньше делал вот так перед вызовом страницы с ошибкой но сейчас этот вариант не подходит:
//-- Clear bufer -- //
while (ob_get_level()>0) {
@ob_end_clean();
}
 

StalkerClasses

Новичок
Примеры:
PHP:
<?php
    // Пример 1
$condition = 1;
ob_start();

echo "<body><p>Hello ";

if ($condition) {
    print 1;
  exit;
}

echo " World!</p></body>";
ob_end_flush();


// выводится "<body><p>Hello 1", а нужно "1"
?>
PHP:
<?php
    // Пример 2
$condition = 1;

$str = "<body><p>Hello ";

if ($condition) {
    print 1;
  exit;
}

$str .= " World!</p></body>";
print $str;

// выводится "1" - как и нужно
?>
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Имхо либо писать нормально, не на "лапше", либо в блоке с условием чистить буфер вывода и уже кидать после то, что надо. Но я бы посмотрел в сторону человеческого подхода.
 
  • Like
Реакции: WMix
Сверху