解析“字节(偏移十六进制文本)”

时间:2012-07-12 18:21:29

标签: php regex hex

您可以使用wireshark从udp数据包复制字节数据。 wireshark

它产生这样的数据

00f00:   21 00 d2 0c 17 ca d9 2f fe 40 be 01 00 37 fa 83  !....../.@...7..
00f09:   21 00 d2 0c 17 ca d9 2f fe 40 be 01 00 37 fa 83  !....../.@...7..
00f10:   2c b3 bd a2                                      ,...

如何使用 php regex 从此文本表中获取数组(21 00 d2 0c 17 ca d9 2f fe 40 be 01 00 37 fa 83 2c b3 bd a2)中的所有字节? (从每一行到单个php数组的字节,甚至更好地进入 string

我不仅要解析wireshark数据(所以关于字节(Offset Hex)的建议不起作用)

1 个答案:

答案 0 :(得分:2)

我认为一个简单的解决方案是将字符串操作与简单的正则表达式结合起来,如下所示:

$output = '';
foreach( explode( "\n", $input) as $line) {
    if( preg_match( '/(?:[a-f0-9]{2}\s){1,16}/i', $line, $matches)) {
        $output .= ' ' . $matches[0];
    }
}

$output = trim( $output);
var_dump( $output);

outputs

string(109) "21 00 d2 0c 17 ca d9 2f fe 40 be 01 00 37 fa 83 21 00 d2 0c 17 ca d9 2f fe 40 be 01 00 37 fa 83 2c b3 bd a2"