【问题标题】:Output Buffering dumps empty string, 2560 char long输出缓冲转储空字符串,2560 字符长
【发布时间】:2020-02-17 09:02:00
【问题描述】:

我正在转储变量:

ob_start(null, 4096);
define('SITERNDNUM', rand(10000000,99999999));
// other declarations and vars
Session::init();
// 
$output_ob = ob_get_contents();
var_dump($output_ob);

我得到的所有输出是:

string(2560) " "

我尝试过使用flush函数和其他输出函数都无济于事。

【问题讨论】:

    标签: php output-buffering


    【解决方案1】:

    字符串不为空。它的长度为 2560 字节。 var_dump() 无法显示所有字符并取消某些字符的输出。

    为了您的理解:

    $str = "\x00\x01\x02\n";
    var_dump($str);  //string(4) " " 
    

    十六进制表示法有助于使所有字节可见。

    function strhex($s){
      return $s != '' ? '\\x'.implode('\\x',str_split(bin2hex($s),2)) : '';
    }
    
    
    $str = "\x00\x01\x02\n";
    
    echo strhex($str);  //  \x00\x01\x02\x0a
    

    如果你使用这个函数而不是 var_dump,所有的字符都是可见的。

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2022-11-30
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多