2012-05-28 48 views
3

这是通用PHP问题,不仅仅是oscommerce。获取php动态生成的html代码作为字符串

在旧版本的oscommerce中,通过创建PHP类的对象来显示列。如果我有这样它就会显示

new infoBox2($info_box_contents) ; 

但在新的版本我没有这样做,因为很多原因这个的自由。 i 必须将通过创建上述对象生成的所有HTML代码返回为字符串。这是什么字符串现在 -

$data = '<div class="ui-widget infoBoxContainer">' .' <div class="ui-widget-header infoBoxHeading">' . MODULE_BOXES_CATEGORIES_BOX_TITLE . '</div>' .' <div class="ui-widget-content infoBoxContents">' . $categories_string . '</div>' .'</div>'; 

你可以注意到它是预定义的HTML代码。我需要将$ data值更改为在创建对象时生成的动态生成的HTML代码。 关于如何做到这一点的任何想法?我试图型铸造对象为一个字符串,使用的var_dump

的var_dump是给这样的事情

object(infoBox2)#8 (7) { ["table_border"]=> string(1) "0" ["table_width"]=> string(4) "100%" ["table_cellspacing"]=> string(1) "0" ["table_cellpadding"]=> string(1) "0" ["table_parameters"]=> string(22) " class="infoBox_table"" ["table_row_parameters"]=> string(0) "" ["table_data_parameters"]=> string(19) " class="infoBox_td"" } 

这不正是因为它的HTML代码。

这里所有的问题都是将PHP代码生成的HTML代码作为字符串获取。我该怎么做?

如果我把新的对象创建放在一个单独的文件中并使用file_get_contents,那么它将返回PHP代码本身,还是将返回由PHP生成的HTML代码。请注意,我将通过文件路径不是URL。我无法通过网址,因为我现在不会深入oscommerce内部。我会用这样的: -

file_get_contents("myfile.php"); 

file_get_contents("http://mywebsite.com/myfile.php"); 

回答

6

您可以使用名为 “输出缓冲” 的技术。

# start redirecting output to a buffer 
ob_start(); 

# execute the other PHP file 
include('myfile.php'); 

# grab whatever got output since ob_start() (and stop buffering) 
$html = ob_get_clean(); 
+0

确定有帮助。这可以以某种方式工作,如果我只是把我的PHP代码之间,而不是调用一个单独的PHP文件? –

+0

是的,它甚至可以在代码之间工作。这解决了我现在挣扎了11个小时的问题。 –