【问题标题】:ob_get_clean returns empty in phpob_get_clean 在 php 中返回空
【发布时间】:2014-10-16 13:40:09
【问题描述】:

我有大量数据作为字符串,其中包括文本和大量图像。

字符串包括如下的特殊标签以及普通文本+图像。

{{ title }}

我有一个函数可以检查该字符串是否包含任何 php 标签?> 或 <?php

功能是

    protected function parseTxt($text){
        echo $text; //Gives me correct string
        ob_start();
        $result = eval('?>'.$text.'<?php ');                        
        if ($result === false){
          echo '<br />You have a syntax error.The snippet of text that contains 
the error has been output below:<br />';
          exit(str_replace(array('?>', '<?php '), '', $text));
        }
        return ob_get_clean();
      }

我将 str 设为 null。

我有 php 5.5,我已将内存限制增加到 512

请提出建议,因为我没有任何替代线索。非常感谢任何帮助。

【问题讨论】:

  • 我认为没有任何缓冲区输出,请检查您的 if()
  • 谢谢,但问题是 echo $text 输出正确的数据。
  • 试试 echo $text; ob_start 之后需要一个输出来缓冲你的所有输出条件出错
  • 您的 eval 可能返回 false。实际上,您没有将任何内容放入缓冲区。如果结果是假的,你有回声,但在下一行退出而不点击ob_get_clean(),如果是真的echo $text;ob_start();之前
  • 你意识到你正在做的事情非常危险,对吧? eval() 是邪恶的!

标签: php parsing buffer output


【解决方案1】:

您的代码必须在到达 ob_get_clean() 之前退出。 另外,不要使用 eval。只是不要。你为什么不直接echo $text

附言

评估是邪恶的

【讨论】:

  • 是的,它在到达 ob_get_clean 之前就退出了。谢谢。
猜你喜欢
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2014-03-04
  • 1970-01-01
相关资源
最近更新 更多