中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

php讀取torrent種子文件內容的方法(測試可用)
來源:易賢網 閱讀:1903 次 日期:2016-08-25 14:59:12
溫馨提示:易賢網小編為您整理了“php讀取torrent種子文件內容的方法(測試可用)”,方便廣大網友查閱!

這篇文章主要介紹了php讀取torrent種子文件內容的方法,可實現讀取并顯示torrent種子文件內容的功能,簡單實用,需要的朋友可以參考下

<?php

/**

 * Class xBEncoder

 * Author: Angus.Fenying

 * Version: 0.1

 * Date:  2014-06-03

 *

 *  This class helps stringify or parse BENC

 *  codes.

 *

 * All Copyrights 2007 - 2014 Fenying Studio Reserved.

 */

class xBEncoder

{

  const READY = 0;

  const READ_STR = 1;

  const READ_DICT = 2;

  const READ_LIST = 3;

  const READ_INT = 4;

  const READ_KEY = 5;

  public $y;

  protected $z, $m, $n;

  protected $stat;

  protected $stack;

  /**

   * This method saves the status of current

   * encode/decode work.

   */

  protected function push($newY, $newStat)

  {

    array_push($this->stack, array($this->y, $this->z, $this->m, $this->n, $this->stat));

    list($this->y, $this->z, $this->m, $this->n, $this->stat) = array($newY, 0, 0, 0, $newStat);

  }

  /**

   * This method restore the saved status of current

   * encode/decode work.

   */

  protected function pop()

  {

    $t = array_pop($this->stack);

    if ($t) {

      if ($t[4] == self::READ_DICT) {

        $t[0]->{$t[1]} = $this->y;

        $t[1] = 0;

      } elseif ($t[4] == self::READ_LIST)

        $t[0][] = $this->y;

      list($this->y, $this->z, $this->m, $this->n, $this->stat) = $t;

    }

  }

  /**

   * This method initializes the status of work.

   * YOU SHOULD CALL THIS METHOD BEFORE EVERYTHING.

   */

  public function init()

  {

    $this->stat = self::READY;

    $this->stack = array();

    $this->z = $this->m = $this->n = 0;

  }

  /**

   * This method decode $s($l as length).

   * You can get $obj->y as the result.

   */

  public function decode($s, $l)

  {

    $this->y = 0;

    for ($i = 0; $i < $l; ++$i) {

      switch ($this->stat) {

        case self::READY:

          if ($s[$i] == 'd') {

            $this->y = new xBDict();

            $this->stat = self::READ_DICT;

          } elseif ($s[$i] == 'l') {

            $this->y = array();

            $this->stat = self::READ_LIST;

          }

          break;

        case self::READ_INT:

          if ($s[$i] == 'e') {

            $this->y->val = substr($s, $this->m, $i - $this->m);

            $this->pop();

          }

          break;

        case self::READ_STR:

          if (xBInt::isNum($s[$i]))

            continue;

          if ($s[$i] = ':') {

            $this->z = substr($s, $this->m, $i - $this->m);

            $this->y = substr($s, $i + 1, $this->z + 0);

            $i += $this->z;

            $this->pop();

          }

          break;

        case self::READ_KEY:

          if (xBInt::isNum($s[$i]))

            continue;

          if ($s[$i] = ':') {

            $this->n = substr($s, $this->m, $i - $this->m);

            $this->z = substr($s, $i + 1, $this->n + 0);

            $i += $this->n;

            $this->stat = self::READ_DICT;

          }

          break;

        case self::READ_DICT:

          if ($s[$i] == 'e') {

            $this->pop();

            break;

          } elseif (!$this->z) {

            $this->m = $i;

            $this->stat = self::READ_KEY;

            break;

          }

        case self::READ_LIST:

          switch ($s[$i]) {

            case 'e':

              $this->pop();

              break;

            case 'd':

              $this->push(new xBDict(), self::READ_DICT);

              break;

            case 'i':

              $this->push(new xBInt(), self::READ_INT);

              $this->m = $i + 1;

              break;

            case 'l':

              $this->push(array(), self::READ_LIST);

              break;

            default:

              if (xBInt::isNum($s[$i])) {

                $this->push('', self::READ_STR);

                $this->m = $i;

              }

          }

          break;

      }

    }

    $rtn = empty($this->stack);

    $this->init();

    return $rtn;

  }

  /**

   * This method encode $obj->y into BEncode.

   */

  public function encode()

  {

    return $this->_encDo($this->y);

  }

  protected function _encStr($str)

  {

    return strlen($str) . ':' . $str;

  }

  protected function _encDo($o)

  {

    if (is_string($o))

      return $this->_encStr($o);

    if ($o instanceof xBInt)

      return 'i' . $o->val . 'e';

    if ($o instanceof xBDict) {

      $r = 'd';

      foreach ($o as $k => $c)

        $r .= $this->_encStr($k) . $this->_encDo($c);

      return $r . 'e';

    }

    if (is_array($o)) {

      $r = 'l';

      foreach ($o as $c)

        $r .= $this->_encDo($c);

      return $r . 'e';

    }

  }

}

class xBDict

{

}

class xBInt

{

  public $val;

  public function __construct($val = 0)

  {

    $this->val = $val;

  }

  public static function isNum($chr)

  {

    $chr = ord($chr);

    if ($chr <= 57 && $chr >= 48)

      return true;

    return false;

  }

}

//使用實例

$s = file_get_contents("test.torrent");

$bc = new xBEncoder();

$bc->init();

$bc->decode($s, strlen($s));

var_dump($bc->y);

希望本文所述對大家PHP程序設計有所幫助。

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
久久久久久久久久久黄色| 免费在线观看一区二区三区| 国内精品国产三级国产a久久| 亚洲女爱视频在线| 欧美一区二区三区在| 欧美日韩一区二区三区高清| 成人永久免费视频| 国产在线精品一区二区不卡了| 一区二区国产视频| 国产精品免费人成网站| 国产亚洲欧洲一区高清在线观看| 欧美四级电影在线观看| 在线观看欧美黄色| 99国产一区二区三精品乱码| av电影天堂一区二区在线观看| 成人av午夜电影| 依依成人精品视频| 精品国产免费久久| 欧美亚洲国产一区二区三区va| 在线不卡的av| av毛片久久久久**hd| 亚洲人成在线播放网站岛国| 在线亚洲一区观看| 亚洲综合999| 99久久精品久久久久久清纯| 欧美另类高清zo欧美| 精品国产一区二区在线观看| 国产精品原创巨作av| 一区二区三区在线播| 久久国内精品自在自线400部| 久久午夜电影网| 国产美女娇喘av呻吟久久| 亚洲国产精品国自产拍av| 中日韩免费视频中文字幕| 久久久久久97三级| 国产精品久久久久久久午夜片| 久久99精品国产.久久久久久| 成人精品小蝌蚪| 欧美亚州韩日在线看免费版国语版| 亚洲va欧美va人人爽| 中文字幕中文字幕一区| 国产资源在线一区| 91啪在线观看| 日韩亚洲欧美在线观看| 欧美激情一区二区在线| 亚洲乱码精品一二三四区日韩在线 | 95精品视频在线| 在线视频一区二区免费| 日韩欧美国产电影| 亚洲欧洲精品成人久久奇米网| 亚洲国产成人91porn| 久久99国产精品免费网站| 成人av在线播放网址| 欧美日韩五月天| 国产欧美精品一区二区色综合| 亚洲成人av一区二区三区| 精品在线播放免费| 欧美日韩在线一区二区| 中文字幕电影一区| 日本vs亚洲vs韩国一区三区二区| jlzzjlzz亚洲女人18| 日韩一区二区三区视频在线| 中文字幕综合网| 国产成人综合自拍| 欧美日韩成人在线一区| 亚洲一卡二卡三卡四卡| 97精品久久久午夜一区二区三区| 日韩欧美一区在线| 亚洲在线一区二区三区| 99久久国产综合精品女不卡 | 国产日本欧洲亚洲| 久久成人免费网站| www..com久久爱| 欧美亚洲愉拍一区二区| 国产精品青草久久| 国产在线精品免费| 日韩欧美中文字幕精品| 日韩一区精品视频| 欧美精三区欧美精三区| 国内久久精品视频| 欧美一区二区三区色| 亚洲va中文字幕| 欧美午夜寂寞影院| 亚洲特黄一级片| 91小宝寻花一区二区三区| 国产精品毛片大码女人| 国产一区二区精品久久99| 2023国产一二三区日本精品2022| 美女网站在线免费欧美精品| 欧美一区二区三区四区视频| 午夜激情久久久| 欧美日韩电影在线| 亚洲超碰精品一区二区| 欧美日韩你懂的| 美女脱光内衣内裤视频久久影院| 欧美一卡二卡在线| 男男视频亚洲欧美| 久久精品一区二区三区四区| 国产成人免费在线| 国产精品久久久久久久久搜平片| k8久久久一区二区三区| 一区二区三区精品| 亚洲第一电影网| 99久久精品情趣| 日韩一区二区视频| 青娱乐精品视频| 欧美精品一区二区久久婷婷| 国内精品在线播放| 国产精品免费免费| 在线亚洲欧美专区二区| 日韩av电影免费观看高清完整版 | 一区二区三区在线观看网站| 中文字幕精品综合| 国产一区二区视频在线| 国产女主播视频一区二区| 播五月开心婷婷综合| 亚洲日本成人在线观看| 91免费国产在线| 亚洲国产欧美日韩另类综合| 91精品国产色综合久久| 男人的j进女人的j一区| 精品电影一区二区三区| gogo大胆日本视频一区| 亚洲一区二区三区四区在线免费观看| 色婷婷亚洲精品| 久久se这里有精品| 成人免费在线播放视频| 欧洲精品视频在线观看| 另类综合日韩欧美亚洲| 国产精品福利在线播放| 777xxx欧美| 高清在线不卡av| 日韩国产欧美在线播放| 国产性色一区二区| 欧美色图激情小说| 久久99精品久久只有精品| 国产精品视频观看| 69堂成人精品免费视频| 国产精品1024| 亚洲国产日韩av| 久久综合九色综合欧美98| 97精品视频在线观看自产线路二| 激情欧美一区二区| 中文字幕在线观看不卡| 欧美一卡二卡在线观看| 在线免费精品视频| 国产大陆亚洲精品国产| 视频一区欧美精品| 国产精品国产三级国产aⅴ原创| 91精品婷婷国产综合久久性色| av在线不卡免费看| 国产一区在线不卡| 蜜臀av一级做a爰片久久| 中文字幕一区二区三区蜜月| 国产欧美日韩视频在线观看| 日韩精品中文字幕一区二区三区| 欧美综合视频在线观看| 在线精品亚洲一区二区不卡| 波多野结衣在线aⅴ中文字幕不卡| 蜜臀久久99精品久久久画质超高清 | 日本韩国精品在线| 99精品久久只有精品| 国产精一品亚洲二区在线视频| 午夜精品久久久久久久久久| 亚洲一区中文在线| 18成人在线视频| 亚洲人成网站精品片在线观看| 久久精品综合网| 欧美激情一区二区三区| 国产精品色呦呦| 久久免费电影网| 2023国产精品视频| 日韩一区二区高清| 欧美一区二区高清| 精品少妇一区二区三区| 欧美大片一区二区| 欧美成人在线直播| 日韩网站在线看片你懂的| 欧美一级在线观看| 日韩精品影音先锋| 精品国产髙清在线看国产毛片| 久久综合九色综合97婷婷| 久久精品在线免费观看| 久久久精品黄色| 欧美国产激情一区二区三区蜜月| 久久久久久久综合色一本| 久久综合狠狠综合久久激情| 国产亚洲欧美日韩俺去了| 国产精品福利一区| 亚洲国产日韩a在线播放性色| 亚洲一区电影777| 日本亚洲三级在线| 国产麻豆精品95视频| 国产99一区视频免费 | 国产免费观看久久| 国产精品久久久久一区| 中文字幕日韩精品一区| 一区二区三国产精华液| 日本麻豆一区二区三区视频| 国产中文字幕一区|