易截截图软件、单文件、免安装、纯绿色、仅160KB

php 读取 魔兽DBC文件

话说头疼了N天的问题,今天终于解决了。
要做Mangos的管理软件,Copy多玩魔兽数据库做了个相同功能的程序,但是开发中发现并不是全部的信息都体现在数据库里。
唯一的解决方法就是去读取dbc文件。
最开始想到的就是使用类似读取ip库的方法。但是问题很明显,不同的库文件存放的头文件长度不同,只能一点一点的试或是在网上找资料。
折腾了一天终于啊...
文件存放规则其实很简单,头长度为20,每4个字节为一个单位,标志者 标题,数据条数,每个字段长度,每行数据字段数,每个字符长度
也就是说正文的开始是从第21个开始,然后只要计算出没行数据的偏移量就可以了。
下面这个类就是完整的实现了dbc的读取和查询功能。
写这个类采用了几个小时,还有很多不完善的地方,而且页面有进行真正意义上的缓存。
之后会更好的完善这个功能类。
顺便提一句,网上那些胡乱回答的家伙去死吧,有的说wow的dbc 就是vfp的dbc数据库文件,有的说用odbc或adodb打开...
我倒是想去完善这些问题,可惜都已经过时限了。
<?php
/**
* WOW Dbc文件 读取核心类
*
* @package Eclair_Wow
* @version 1.0
*
* @desc -- 转载请标明出处 --
* @author Eclair.W wujian@myiee.com 95732081
*/
class Dbc
{
const HEADLENGTH = 20;
const HEADSIZE = 4;//头部每个标识的长度

protected $_enableCache = true;
protected $_fp;//文件资源
protected $head = array();
protected $pointer = 0;
protected $item_length;//每行的长度
protected $count; //数据的行数
protected $line_fileds;//每行的长度
protected $meter = 4;//每项的字符串长度
protected $dbc_file;

protected $_cache = array();

protected $_body_pos;//数据信息开始的位置

/**
* dbc 读取查询方法
*
* @param string dbc文件位置 $dbc_file
* @param array 每一项的名称 $head
*/
public function __construct($dbc_file,$head = array(),$enableCache = true)
{
ini_set('memory_limit','512m');
set_time_limit(0);
$this->dbc_file = $dbc_file;
$this->autoOpen();//打开文件资源
$this->readHead();
$this->head = $head;
$this->_enableCache = $enableCache;
}

public function __destruct()
{
fclose($this->_fp);
}

public function __ge


相关文档:

如何用C 编写PHP扩展

PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。
  扩展API的引入使PHP取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展。。扩展主要的思想是 ......

php中使用header函数的http头设置

/ ok
header('HTTP/1.1 200 OK');
//设置一个404头:
header('HTTP/1.1 404 Not Found');
//设置地址被永久的重定向
header('HTTP/1.1 301 Moved Permanently');
//转到一个新地址
header('Location: http://www.example.org/'
);
//文件延迟转向:
header('Refresh: 10; url=http://www.example.org/');
print 'Y ......

PHP——计数器1


项目结构如上
创建counter.txt文件
创建counter1.php文件
初始化counter.txt文件中的内容
输入“0”
counter1.php文件代码
<?php
$fp = fopen("counter.txt","r");

if ($str1==false){
$str1 = 0;
}
$str1 = fgets($fp,10);
$str1++;
fclose($fp);

$fp = ......

Eclipse调试PHP程序时的乱码问题解决方案

本从用的是Zend Debugger
在调试counter1.php的时候出现了乱码错误
找到了问题的原因
zend debugger默认的编码为utf-8
而php的默认编码方式为gbk
当初配置php开发环境是为了部署discuz论坛
所以就设置成了gbk
这便是原因了
统一一下
都用utf-8
window-preferences-general-workspace
text-file-encoding: utf-8 ......

【待修改】表单验证之PHP代码框架

  我在上一篇文章中讲到使用javascript做集成表单验证的方法,对于客户端验证已经足够,但好的表单验证应同时在客户端和服务器端进行——这正是写本文的目的。
    如果采用一般的验证方法应该怎样写呢?
    if ($_POST['some'] 不满足 condition) {
   & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号