输出缓冲转储空字符串,2560 个字符长

Output Buffering dumps empty string, 2560 char long

我正在转储变量:

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) " "

我试过使用冲洗功能和其他输出功能,但没有用。

字符串不为空。它有 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,所有字符都将可见。