2017 © Pedro Peláez
 

library bencode

A simple bencoding library for PHP.

image

dsmithhayes/bencode

A simple bencoding library for PHP.

  • Thursday, February 11, 2016
  • by dsmithhayes
  • Repository
  • 2 Watchers
  • 2 Stars
  • 18 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 6 % Grown

The README.md

Bencode

This is a library used for encoding and decoding bencoded streams. Bencoding is primarily found in the makeup of .torrent files., (*1)

Bencoding Basics

Pronounced bee-encoding, this encoding focuses on binary encoding with four basic element data structures., (*2)

  1. Integer
  2. Byte
  3. List
  4. Dictionary

The last two elements (List, Dictionary) are just collections of the first two elements., (*3)

Integer

The Integer element is a positive or negative integer that is always prefixed with an i, and suffixed with an e., (*4)

i45e
i-1e

Usage

<?php

use Bencode\Integer;

$int = new Integer(45);
echo $int->encode();    // i45e

$int->decode(i-445e);
echo $int->write();     // -445

Byte

Bytes are encoded with their size (in bytes), a : and then the sequence of bytes., (*5)

5:hello
6:123456

Note that the second example will encode the character codes and not the binary value of the integers., (*6)

Usage

<?php

use Bencode\Byte;

$byte = new Byte('hello');
echo $byte->encode();       // 5:hello

$byte->decode('5:world');
echo $byte->write();        // world

List

A List is just that, a list of Byte and Integer elements. It has a siilar encoding as the Integer. The List is prefixed with l and suffixed with e. Within are encoded Bytes and integers., (*7)

li45e5:hello5:worldi-45e

Usage

The class is named BList because List is a reserved keyword in PHP., (*8)

<?php

use Bencode\Collection\BList

$list = new BList([45, 'hello', 'world', -45]);
echo $list->encode();       // li45e5:hello5:worldi-45e

$list->decode('li34e4:davee');
print_r($list->write());     // [34, 'dave']

Dictionary

Dictionaries are key-value lists. The first element in the list is the key, and the second is the value. The Dictionary is prefixed with a d and suffixed with an e., (*9)

d3:key5:valuee

You can also use elements as values in the list., (*10)

d3:keyli3ei5eee
d3:keyd3:key5:valueee

Usage

<?php

use Bencode\Collection\Dictionary;

$dictionary = new Dictionary(['key' => 'value']);
echo $dictionary->encode();     // d3:key5:valuee

$dictionary->decode('d3:new6:valuese');
print_r($dictionary->write());  // ['new' => 'values']

Dictionaries are what your .torrent files are encoded with. You can easily build objects to manipulate data of a torrent file., (*11)

<?php

use Bencode\Collection\Dictionary;

$dictionary = new Dictionary();
$torrent = file_get_contents('example.torrent');

$ditionary->decode($torrent);

$buffer = $dictionary->write();

echo $buffer['comment'];

The Versions

11/02 2016

7.x-dev

7.9999999.9999999.9999999-dev https://github.com/dsmithhayes/bencode

A simple bencoding library for PHP.

  Sources   Download

BSD 3.0

The Requires

  • php >=7.0.0

 

The Development Requires

by Dave Smith-Hayes

torrent bencode

13/10 2015

dev-master

9999999-dev https://github.com/dsmithhayes/bencode

A simple bencoding library for PHP.

  Sources   Download

BSD 3.0

The Development Requires

by Dave Smith-Hayes

torrent bencode

13/10 2015

v0.1.3

0.1.3.0 https://github.com/dsmithhayes/bencode

A simple bencoding library for PHP.

  Sources   Download

BSD 3.0

The Development Requires

by Dave Smith-Hayes

torrent bencode

07/09 2015

v0.1.0

0.1.0.0 https://github.com/dsmithhayes/bencode

A simple bencoding library for PHP.

  Sources   Download

BSD 3.0

The Development Requires

by Dave Smith-Hayes

torrent bencode