search

Home  >  Q&A  >  body text

PHP如何将输出的内容放到一个变量中

我也不知道我问题标题的描述是否正确。

我正在做一个项目,里面用到了一些php + html格式的代码,然后我需要把上面的所有的输出的html结果保存到一个缓存中。

我现在唯一的办法就是把要保存的php+html格式代码写成类似

$cache = "html".php."html";
然后才能缓存这个$cache变量。

有没有办法让我把这些php + html代码放到一个文件中,然后读取他们输出的效果到一个变量里面?


例如我有这么一些代码

<p class="article row_3" onmouseover="this.style.cssText='background-color:<?php echo $hue[$i-1]; ?>'" onmouseout="this.style.cssText='background: #333;'">
     <p><?php $post_describe = get_post_meta($post->ID,'post_describe',true);if(!$post_describe){echo strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 142, '');}else{echo $post_describe;}?></p>
</p>

代码中有一些if判断之类的语句,我不方便吧他们全部写在一行,然后丢一个变量里面。这样很不利于后期修改。

所以我寻求其他更好的办法。


我发现使用include 会直接输出文件中的内容,而不会返回内容给一个变量。

大家讲道理大家讲道理2897 days ago439

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-10 17:26:03

    这是个好问题。实际上这就是在直接把php当模板语言来用。

    http://php.net/manual/en/function.includ...

    看这里的 Example #6 Using output buffering to include a PHP file into a string

    不被php代码约束的内容输出到响应,你是阻拦不了的,只能这样用重定向的方法来捕获之。

    reply
    0
  • PHPz

    PHPz2017-04-10 17:26:03

    解决了,在include中间加入

    ob_start();
     你的代码
    $html = ob_get_contents();
    ob_end_clean();

    reply
    0
  • PHPz

    PHPz2017-04-10 17:26:03

    ob_start之后可以把输出的内容放到缓冲区内,而不是直接返回给用户,然后通过ob_get_contents获取到

    reply
    0
  • Cancelreply