mrp修改打包解包函数.php读取mrp

2011/12/12 13:07:00  人气 705    修改美化论坛  

------------------
bmmrp.php 用于mrp文件解、打包(需要zlib扩展库支持)
<?php
function mrpgetlist($$f)
{
$$f=fopen($$f,’rb’);
if(fread($$f,4)!=’MRPG’)
return false;
$$r=240;
fseek($$f,4,SEEK_SET);
$$s=hexdec(bin2hex(strrev(fread($$f,4))));
for(;true;)
{
if($$r>$$s) break;
fseek($$f,$$r,SEEK_SET);
$$x=hexdec(bin2hex(fread($$f,1)));
$$r+=4;
fseek($$f,$$r,SEEK_SET);
$$n=fread($$f,$$x-1);
$$r+=$$x;
fseek($$f,$$r,SEEK_SET);
$$v=hexdec(bin2hex(strrev(fread($$f,4))));
$$r+=4;
fseek($$f,$$r,SEEK_SEK);
$$l=hexdec(bin2hex(strrev(fread($$f,4))));
$$r+=8;
$$list[]=array(’n’=>$$n,’v’=>$$v,’l’=>$$l);
}
fclose($$f);
return $$list;
}
function mrpunpack($$fname,$$dir,$$list=null)
{
$$f=fopen($$fname,’rb’);
if(fread($$f,4)!=’MRPG’)
return false;
if($$list==null) $$list=mrpgetlist($$fname);
mkdir($$dir);
foreach($$list as $$a)
{
$$j++;
fseek($$f,$$a[’v’],SEEK_SET);
#$$x=fread($$f,$$a[’l’]);
#$$a[’n’]=mrpcname($$a[’n’],$$dir);
file_put_contents(($$fn=“$$dir/$$j.$$a[n].txt“).’.gz’,fread($$f,$$a[’l’]));
$$gz=gzopen($$fn.’.gz’,’r’);
#$$gz2=gzread($$gz,10000000);
file_put_contents($$fn,gzread($$gz,10000000));
gzclose($$gz);
}
fclose($$f);
return $$list;
}
function mrppacklist($$list,$$gzip=3)
{
if($$gzip<1 or $$gzip>9)
$$gzip=3;
foreach($$list as $$a)
{
if(!file_exists($$a)) continue;
#$$af=file_get_contents($$a);
$$gz=gzopen($$a.“.gz“,“w“.$$gzip);
gzwrite($$gz,file_get_contents($$a));
gzclose($$gz);
$$al=filesize($$a.’.gz’);
$$na=eregi_replace(chr(94).’.*[\\/]([0-9]+\.)?(.[’.chr(94).’\\/]*)\.txt$$’,’\\2’,$$a);
#$$na=eregi_replace(’\([0-9]+\)$$’,’’,$$na);
$$n=strlen($$na)+1;
$$nn+=$$n;
$$lst[]=array($$na,$$a.’.gz’,$$al,$$n);
}
$$lstl=16*($$jc=count($$lst))+$$nn;
$$lst[0][]=$$lstl+248+$$lst[0][3];
for($$a=1;$$a<$$jc;$$a++)
$$lst[$$a][]=$$lst[$$a-1][4]+$$lst[$$a-1][2]+8+$$lst[$$a][3];
return $$lst;
}
function mrppack($$f,$$lst,$$mrp)
{
if(!function_exists(’binadd’)) include ’dnmrp.php’;
$$f=fopen($$f,’rb’);
if(fread($$f,4)!=’MRPG’)
return false;
fseek($$f,8,SEEK_SET);
$$fa=fread($$f,232);
fclose($$f);
$$x=chr(0);
foreach($$lst as $$a)
{
$$wz=strrev(pack(’H*’,binadd(dechex($$a[4]),8)));
$$cd=strrev(pack(’H*’,binadd(dechex($$a[2]),8)));
$$fl=pack(’H*’,binadd(dechex($$a[3]),2));
#$$x=chr(0);
$$filelist.=$$fl.$$x.$$x.$$x.$$a[0].$$x.$$wz.$$cd.$$x.$$x.$$x.$$x;
$$dat.=$$fl.$$x.$$x.$$x.$$a[0].$$x.$$cd.file_get_contents($$a[1]);
}
$$start=strrev(pack(’H*’,binadd(dechex($$lst[0][4]-$$lst[0][3]-16),8)));
file_put_contents($$mrp,“MRPG“.$$start.$$fa.$$filelist.$$dat);
return $$lst;
}
function mrpcname($$f,$$dir)
{
if(file_exists(“$$dir/$$f.txt“) or eregi(“\([0-9]+\)$$“,$$f))
$$g=true;
for($$a=0;$$g or file_exists(“$$dir/$$f($$a).txt“);$$a++)
{$$j=“(“.($$a+1).“)“;
$$g=false;}
return “$$f$$j“;
}
?>
下页    上页    全部    余下    
 

. 请牢记绝客网域名:jkniu.com jkmrp.com

发表回复

   


  通知楼主

4楼

老虎改吃草.01-14 15:04
看不懂

回复只看TA

地板

烟消^【云散】.12-13 19:45
√☆爱得过火★★

回复只看TA

椅子

★风流小猪★.12-12 20:49
顶老大

回复只看TA

沙发

『韩雅』 √☆爱得过火★★.12-12 13:11
:很好!(此回复虽有且仅有两个字,却深刻地表达了回复人的深深的祝福,可谓言简意赅,一字千金,字字扣人心弦,字字催人泪下,足可见回复人扎实的文字功底和信手拈来的写作技巧及惨绝人环的创新能力。实在佩服佩服!再加上以感叹号收尾,点睛之笔,妙笔生花,意境深远,照应前文,升华主题,把回复人的感情表达得淋漓尽致,给人无限感动和惆怅,有浑然天成之感,实乃回复中之极品,祝福中之绝笔

回复只看TA