public static parseLabels ( &$data, string $orig = null ) : string | ||
$orig | string | Original packet |
return | string | Dot-separated labels list |
public static function parseLabels(&$data, $orig = null)
{
$str = '';
while (mb_orig_strlen($data) > 0) {
$l = ord($data[0]);
if ($l >= 192) {
$pos = Binary::bytes2int(chr($l - 192) . mb_orig_substr($data, 1, 1));
$data = mb_orig_substr($data, 2);
$ref = mb_orig_substr($orig, $pos);
return $str . Binary::parseLabels($ref, $orig);
}
$p = mb_orig_substr($data, 1, $l);
$str .= $p . ($l !== 0 ? '.' : '');
$data = mb_orig_substr($data, $l + 1);
if ($l === 0) {
break;
}
}
return $str;
}
/** * Parse structure of labels * @param string &$data Binary data * @param string $orig Original packet * @return string Dot-separated labels list */ public static function parseLabels(&$data, $orig = null) { $str = ''; while (strlen($data) > 0) { $l = ord($data[0]); if ($l >= 192) { $pos = Binary::bytes2int(chr($l - 192) . binarySubstr($data, 1, 1)); $data = binarySubstr($data, 2); $ref = binarySubstr($orig, $pos); return $str . Binary::parseLabels($ref); } $p = substr($data, 1, $l); $str .= $p . ($l !== 0 ? '.' : ''); $data = substr($data, $l + 1); if ($l === 0) { break; } } return $str; }