Использование include () в ob_start ()

Нужна небольшая поддержка PHP здесь, включенный контент отображается как «1», что означает, что его правда, но нужно, чтобы его содержимое отображалось, и я не уверен, почему это не так. Вот сокращенная версия функции:

public function content { $website->content = 'Some content here. '; ob_start(); include('myfile.php'); $file_content = ob_end_clean(); $website->content .= $file_content; $website->content .= ' Some more content here.'; echo $website->content; } 

Эти результаты:

 Некоторое содержание здесь 
 1 
 Еще немного контента здесь

Когда мне это нужно:

 Некоторое содержание здесь
 «Включено содержимое файла здесь»
 Еще немного контента здесь

Любая идея, как я могу это исправить?

Попробуйте использовать ob_get_clean() вместо ob_end_clean() .

Оба очищают текущий буфер, но ob_end_clean() возвращает логическое значение, тогда как ob_get_clean() возвращает содержимое текущего буфера.

Вы должны использовать ob_get_clean() , а не ob_end_clean() . Первый возвращает строку выходного буфера и опустошает ее, в то время как последний просто выполняет очистку и возвращает bool.

Вместо использования ob_end_clean измените существующий код на нечто похожее на нижеследующее

 ob_start(); include('myfile.php'); $file_content = ob_get_contents(); ob_end_clean (); в ob_start(); include('myfile.php'); $file_content = ob_get_contents(); ob_end_clean (); 

Причина, по которой я не ob_get_clean за ob_get_clean состоит в том, что у меня были моменты, когда другие разработчики путаются в отношении того, что действительно происходит, имя функции не указывает на то, что буферизация вывода закончится после ее вызова.

Я думаю, что эта функция будет подвержена дальнейшим ошибкам, поэтому использование ob_start / ob_end_clean проще понять и улучшить для будущего обслуживания кода.

Стоит обойтись между одной дополнительной строкой кода, но более простой код для понимания.