php 解析nginx 日志,16进制转换字符串

序言
强烈推荐使用 EmEditor 文本编辑器查看日志,基本1个G的日志文件可以秒开。

废话不多说直接上代码

$line = '一行日志数据';
$line = explode('|', $line);
//请求内容,自己打印出来确定下标
$jsonString = trim($line[6]);
//正则匹配16进制字符串
$pattern = '/(\\\\x([0-9A-Fa-f]{2}))+/';
//在当前json字符串中匹配所有的16进制字符,并转换二进制,此处可以正常转换中文
$escapedStr = preg_replace_callback($pattern, function ($matches) {
    $str = $matches[0];
    // 使用hex2bin函数将十六进制转换为二进制
    $binary = hex2bin(str_replace('\x', '', $str));
    return $binary;
}, $jsonString);

$data = json_decode($escapedStr, true);
print_r($data);
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!