3

I want to include a file, but instead of printing output I want to get it as string.

For example, I want include a file:

<?php echo "Hello"; ?> world!

But instead of printing Hello world! while including the file I want to get it as a string.

I want to filter some elements from the file, but not from whole php file, but just from the html output.

Is it possible to do something like this?

4
  • Yes, using output buffering; or by modifying your file to return a vaue instead of echoing it Commented Sep 10, 2016 at 10:00
  • @Mark Baker, but if I use ob, will it still print the output or no? Commented Sep 10, 2016 at 10:01
  • Using output buffering will put the echoed value in the output buffer, not send it to display.... it's up to you what you subsequently do with the contents of that output buffer.... and that can include moving it to a variable rather than displaying it... that's what output buffering is all about Commented Sep 10, 2016 at 10:02
  • Ok, I though that it will print even when buffered. I will try. Thanks Commented Sep 10, 2016 at 10:04

1 Answer 1

7

You can use php buffers like this:

<?php
ob_start();
include('other.php');
$script = ob_get_clean(); // it will hold the output of other.php

You can abstract this into a function:

function inlcude2string($file) {
    ob_start();
    include($file);
    return ob_get_clean(); // it will hold the output of $file
}

$str = inlcude2string('other.php');
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.