我知道PHP生成的输出将遵循我的代码编写方式。例如:
echo '<div id="test">';
echo '<div id="other-test>';
echo '</div>';
echo '</div>';
将输出类似
的内容<div id="test">
<div id="other-test">
</div>
</div>
有没有办法生成这样的东西而不改变我的代码?
<div id="test"><div id="other-test"></div></div>;
就像grunt对.js文件一样。
我知道我可以更改源代码以获得此输出,但这会使代码在开发过程中难以阅读。
为什么我要这样做?因为如果我打开我的应用程序的html输出源,我会看到很多换行符和空格,我想如果我能够驾驭它,那么就需要更少的网络流量。
谢谢!
答案 0 :(得分:1)
我使用输出缓冲。你有这样的东西
<?php
echo '<div id="test">';
echo '<div id="other-test>';
//a lot of other complicated output logic
echo '</div>';
echo '</div>';
首先,在代码开始时添加一个调用以启动输出缓冲。这将阻止PHP发送输出。
<?php
ob_start();
echo '<div id="test">';
echo '<div id="other-test>';
//a lot of other complicated output logic
echo '</div>';
echo '</div>';
然后,在长复杂输出代码的末尾,使用ob_get_clean()
<?php
ob_start();
echo '<div id="test">';
echo '<div id="other-test>';
//a lot of other complicated output logic
echo '</div>';
echo '</div>';
$output = ob_get_clean();
对ob_get_clean
的调用将丢弃输出缓冲区(PHP不会回显任何内容),但在执行此操作之前返回输出缓冲区的内容(即$output
将包含一个字符串本来会输出)。
然后你自己echo
之前可以自由地修改你喜欢的字符串
<?php
ob_start();
echo '<div id="test">';
echo '<div id="other-test>';
//a lot of other complicated output logic
echo '</div>';
echo '</div>';
$output = ob_get_clean();
//remove newlines and carriage returns
$output = str_replace("\r", '', $output);
$output = str_replace("\n", '', $output);
$output = someOtherMinifyFunction($output);
echo $output;