将 html 页面存储到 php 变量中

发布于 2024-12-24 00:19:06 字数 1134 浏览 0 评论 0原文

您好,我想将动态生成的(使用 php)html 代码存储到变量中,并能够将其作为 ajax 请求的回复发送。 假设我随机生成一个表,例如:

<?php 
$c=count($services);
?>
<table>
<?php
for($i=0; $i<$c; $i++){
 echo "<tr>";
 echo "<td>".$services_global[$i][service] ."</td>";
 echo "<td>".$services_global[$i][amount]."</td>";
 echo "<td>&euro; ".$services_global[$i][unit_price].",00</td>";
 echo "<td>&euro; ".$services_global[$i][service_price].",00</td>";
 echo "<td>".$services_global[$i][service_vat].",00%</td>";
 echo "</tr>";
}
?>
</table>

我需要存储所有生成的 html 代码(以及其余部分)并将其作为 json 编码变量进行回显,例如:

$error='none';
$result = array('teh_html' => $html, 'error' => $error);
$result_json = json_encode($result);
echo $result_json;

我可以生成一个 html 文件,然后使用以下命令读取它:

ob_start();
//all my php generation code and stuff
file_put_contents('./tmp/invoice.html', ob_get_contents());
$html = file_get_contents('./tmp/invoice.html');

但这听起来只是错误,因为我并不真正需要生成代码,而只是将其发送到我的主页作为对 ajax 请求的回复,这会浪费资源。 有什么建议吗?

Hi i'd like to store a dinamically generated(with php) html code into a variable and be able to send it as a reply to an ajax request.
Let's say i randomly generate a table like:

<?php 
$c=count($services);
?>
<table>
<?php
for($i=0; $i<$c; $i++){
 echo "<tr>";
 echo "<td>".$services_global[$i][service] ."</td>";
 echo "<td>".$services_global[$i][amount]."</td>";
 echo "<td>€ ".$services_global[$i][unit_price].",00</td>";
 echo "<td>€ ".$services_global[$i][service_price].",00</td>";
 echo "<td>".$services_global[$i][service_vat].",00%</td>";
 echo "</tr>";
}
?>
</table>

I need to store all the generated html code(and the rest) and echo it as a json encoded variable like:

$error='none';
$result = array('teh_html' => $html, 'error' => $error);
$result_json = json_encode($result);
echo $result_json;

I could maybe generate an html file and then read it with:

ob_start();
//all my php generation code and stuff
file_put_contents('./tmp/invoice.html', ob_get_contents());
$html = file_get_contents('./tmp/invoice.html');

But it sounds just wrong and since i don't really need to generate the code but only send it to my main page as a reply to an ajax request it would be a waste of resources.
Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

野味少女 2024-12-31 00:19:06

您不必将其存储在文件中,只需使用正确的输出缓冲函数

// turn output buffering on
ob_start();

// normal output
echo "<h1>hello world!</h1>";

// store buffer to variable and turn output buffering offer
$html = ob_get_clean();

// recall the buffered content
echo $html; //=> <h1>hello world!</h1>

有关 ob_get_clean() 的更多信息

You don't have to store it in a file, you can just use the proper output buffering function

// turn output buffering on
ob_start();

// normal output
echo "<h1>hello world!</h1>";

// store buffer to variable and turn output buffering offer
$html = ob_get_clean();

// recall the buffered content
echo $html; //=> <h1>hello world!</h1>

More about ob_get_clean()

森末i 2024-12-31 00:19:06

如果数据的重新生成成本如此之高,那么我建议您使用 memcached

否则我会每次都重新生成它或将其缓存在前端。

if the data is so much expensive to regenerate then I would suggest you to use memcached.

Otherwise I would go regenerate it every-time or cache it on the frontend.

-残月青衣踏尘吟 2024-12-31 00:19:06
for($i=0;$i<=5;$i++)
{
    ob_start();
    $store_var = $store_var.getdata($i); // put here your recursive function name
    ob_get_clean();
}

function getdata($i)
{
    ?>
    <h1>
    <?php
      echo $i;
    ?>
    </h1>
    <?php
    ob_get_contents();
}
for($i=0;$i<=5;$i++)
{
    ob_start();
    $store_var = $store_var.getdata($i); // put here your recursive function name
    ob_get_clean();
}

function getdata($i)
{
    ?>
    <h1>
    <?php
      echo $i;
    ?>
    </h1>
    <?php
    ob_get_contents();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文