You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何让print_r或var_dump输出含空字节的二进制字符串?

如何完整输出包含空字节的二进制字符串

直接用echo或print输出包含空字节的二进制字符串时,终端、浏览器这类输出环境会把空字节(\0)当成字符串终止符,导致输出被截断。而var_dump会解析字符串的实际长度和结构,所以能正确展示完整信息。

下面是几种能完整输出的方法:

  • 转成十六进制输出:用bin2hex()把二进制字符串转换成十六进制格式,所有字节都会以可见字符展示,不会被截断:

    $binaryStr = file_get_contents('your_file.bin');
    echo bin2hex($binaryStr);
    

    这种方式适合查看二进制内容的实际字节值,每个字节对应两位十六进制字符。

  • 逐字节遍历输出:逐个处理字符串里的每个字节,输出其十六进制值和对应的字符,能清晰看到每一个字节的信息:

    $binaryStr = file_get_contents('your_file.bin');
    for ($i = 0; $i < strlen($binaryStr); $i++) {
        $byte = ord($binaryStr[$i]);
        echo sprintf('%02x (%s) ', $byte, chr($byte) === "\0" ? '\\0' : chr($byte));
    }
    

    这里特意把空字节显示为\0,避免终端直接忽略。

  • 写入文件用二进制编辑器查看:如果不需要在终端/浏览器实时输出,直接把字符串写入文件,用专门的二进制编辑器打开:

    $binaryStr = file_get_contents('your_file.bin');
    file_put_contents('output.bin', $binaryStr);
    

    像Hex Editor Neo、010 Editor这类工具都能完整展示二进制文件的所有内容。

  • 网页环境下转义输出:如果是在网页中输出,用htmlspecialchars配合print_r的返回值,避免浏览器解析空字节时截断:

    $binaryStr = file_get_contents('your_file.bin');
    echo htmlspecialchars(print_r($binaryStr, true));
    

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:06