From 5fd9fa480f302902328b81f912dd67ce378284f8 Mon Sep 17 00:00:00 2001 From: citizenz7 Date: Thu, 20 Apr 2017 18:50:55 +0200 Subject: V.1.4.6 --- Html/includes/BEncode.php | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Html/includes/BEncode.php (limited to 'Html/includes/BEncode.php') diff --git a/Html/includes/BEncode.php b/Html/includes/BEncode.php new file mode 100644 index 0000000..b0876e7 --- /dev/null +++ b/Html/includes/BEncode.php @@ -0,0 +1,94 @@ + $dummy) + $keys[$i++] = stripslashes($key); + sort($keys); + for ($i=0; isset($keys[$i]); $i++) + $return[addslashes($keys[$i])] = $array[addslashes($keys[$i])]; + return $return; + } + + // Encodes strings, integers and empty dictionaries. + // $unstrip is set to true when decoding dictionary keys + function encodeEntry($entry, &$fd, $unstrip = false) { + if (is_bool($entry)) { + $fd .= 'de'; + return; + } + if (is_int($entry) || is_float($entry)) { + $fd .= 'i'.$entry.'e'; + return; + } + if ($unstrip) + $myentry = stripslashes($entry); + else + $myentry = $entry; + $length = strlen($myentry); + $fd .= $length.':'.$myentry; + } + + // Encodes lists + function encodeList($array, &$fd) { + $fd .= 'l'; + // The empty list is defined as array(); + if (empty($array)) { + $fd .= 'e'; + return; + } + for ($i = 0; isset($array[$i]); $i++) + $this->decideEncode($array[$i], $fd); + $fd .= 'e'; + } + + // Passes lists and dictionaries accordingly, and has encodeEntry handle + // the strings and integers. + function decideEncode($unknown, &$fd) { + if (is_array($unknown)) { + if (isset($unknown[0]) || empty($unknown)) + return $this->encodeList($unknown, $fd); + else + return $this->encodeDict($unknown, $fd); + } + $this->encodeEntry($unknown, $fd); + } + + // Encodes dictionaries + function encodeDict($array, &$fd) { + $fd .= 'd'; + if (is_bool($array)) { + $fd .= 'e'; + return; + } + // NEED TO SORT! + $newarray = $this->makeSorted($array); + foreach($newarray as $left => $right) { + $this->encodeEntry($left, $fd, true); + $this->decideEncode($right, $fd); + } + $fd .= 'e'; + } +} // End of class declaration. + +// Use this function in your own code. +function BEncode($array) { + $string = ''; + $encoder = new BEncode; + $encoder->decideEncode($array, $string); + return $string; +} +?> \ No newline at end of file -- cgit v1.2.1