php Include File in a Variable

Simply using include() or require() to output the contents of a ‘include’ file on another web page may work perfectly 90% of the time. However, there will be times where you may want to save it into a variable instead – especially if you are using PHP template classes to generate your web pages. Anyone trying to add a simple thing as a banner on popular forum scripts like phpBB and vBulletin will know what I mean.


Anyway, I will try to show you how you can do that using PHP’s ob_start(), ob_get_contents() and ob_end_clean(). Let’s look at our little include banner / ad file first.

Our sample include file – ad_table.php

This fictitious file we create will output one table with 3 rows of text ads. The entire sample file’s code may look something like this:

php:



<?php 

//  Filename: AD_TABLE.PHP 
//  ======================
echo "<table>\n";
for( $i=0;$i<3;$i++ )
{
  echo "  <tr>\n";
  echo '    <td>'.get_ads('Text',$i+1)."</td>\n";
  echo "  </tr>\n";
}
echo '</table>';

//  ===================
//  FUNCTION: GET_ADS()
//  ===================
function get_ads($keyword,$number)
{
  echo $keyword.' No.'.$number;
}
?>


When we view the source / HTML of this particular page off a browser, it may look something like this:

code:

<table>
  <tr>
    <td>Text No.1</td>
  </tr>
  <tr>
    <td>Text No.2</td>
  </tr>
  <tr>
    <td>Text No.3</td>
  </tr>
</table>

Using our ‘include’ variable in a web page

Now that we’ve seen our ‘include’ file and what it will output, we can then use our ad_table.php in any other web page (most likely in our template-script-driven web pages that is) simply by adding these lines of code:

php:



<?php
//  Filename: INDEX.PHP
//  ==========================================

//  all the usual page and template code here
//  and where we want out 'include' variable to
//  appear, we add these lines

ob_start(); # start buffer
include_once( '/home/user/public_html/ad_table.php' );
# we pass the output to a variable
$html = ob_get_contents();
ob_end_clean(); # end buffer
# and here's our variable filled up with the html
echo $html;

//  we can then continue on with our web page and template
//  script or even add another 'include' variable!

ob_start();
require_once( '/home/user/public_html/ad_table2.php' );
$html2 = ob_get_contents();
ob_end_clean();
echo $html2;

?>


Source

http://www.desilva.biz/php/ob_start.html

Leave a comment