Location: PHPKode > scripts > Miranda IM Database Reader > miranda-im-database-reader/Readme_CN.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Miranda IM Database Reader</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
    margin: 5px;
    background-color: #FFFFFF;
    color: #000000;
    font-family: Arial, "宋体";
    font-size: 100%;
}

td {
    padding-right: 2ex;
    background: #FFFFFF;
    text-align: right;
    font-size: 100%;
}

a {
    color: #004080;
    text-decoration: none;
}

a:visited {
    color: #800080;
    text-decoration: none;
}

a:hover {
    color: #FF0000;
    text-decoration: underline;
}

h1 {
    margin-bottom: 0.5ex;
    color: #006699;
    font-size: large;
    font-weight: bold;
}

h2 {
    margin-bottom: 0.5ex;
    color: #006699;
    font-size: medium;
    font-weight: bold;
}

pre {
    padding: 1ex;
    border: 1px solid #999999;
    background-color: #EEEEEE;
    color: #000000;
    font-family: Fixedsys, "BitStream Vera Sans Mono";
}

.header_title {
    margin-bottom: 0.2em;
    text-align: center;
    font-size: x-large;
    font-weight: bold;
}

.header_subtitle {
    text-align: center;
    line-height: 2.5ex;
    font-size: small;
}

.synopsis {
    border: 1px solid #999999;
    padding: 1ex;
    max-width: 100%;
    font-family: Fixedsys, "BitStream Vera Sans Mono";
}
</style>
</head>
<body>
<div class="header_title">Miranda IM Database Reader</div>
<div class="header_subtitle">
    当前版本: <b>0.01.0</b>, 最后更新: <b>2006年04月01日</b><br>
    Wudi &lt;<a href="mailto:wudicgi&#64;yahoo&#46;de">wudicgi-at-yahoo.de</a>&gt;, <a href="http://spaces.msn.com/wudicgi" target="_blank">MSN Space</a>
</div>
<br>
<h1>名称</h1>
<p>Miranda IM Database Reader - Miranda IM 数据库读取</p>
<h1>概要</h1>
<div class="synopsis">
<span style="color: #008080; font-family: Fixedsys;">// 导出所有聊天记录</span><br />
<span style="color: #FF8000;">$export</span><span style="color: #000000;"> = </span><span style="color: #0000FF;">array</span><span style="color: #000000;">()</span><span style="color: #000000;">;</span><br />
<span style="color: #FF8000;">$MIMDBReader</span><span style="color: #000000;"> = </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> MIMDBReader()</span><span style="color: #000000;">;</span><br />
<span style="color: #FF8000;">$MIMDBReader</span><span style="color: #000000;">-&gt;open</span><span style="color: #000000;">(</span><span style="color: #808080;">'profile.dat'</span><span style="color: #000000;">);</span><br />
<span style="color: #FF8000;">$contacts</span><span style="color: #000000;"> = </span><span style="color: #FF8000;">$MIMDBReader</span><span style="color: #000000;">-&gt;getAllContacts();</span><br />
<span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (</span><span style="color: #FF8000;">$contacts</span><span style="color: #000000;"> </span><span style="color: #0000FF;">as</span><span style="color: #000000;"> </span><span style="color: #FF8000;">$c_offset</span><span style="color: #000000;"> =&gt; </span><span style="color: #FF8000;">$contact</span><span style="color: #000000;">) {</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #FF8000;">$export</span><span style="color: #000000;">[] = </span><span style="color: #FF8000;">$contact</span><span style="color: #000000;">[</span><span style="color: #808080;">'settings'</span><span style="color: #000000;">][</span><span style="color: #FF8000;">$contact</span><span style="color: #000000;">[</span><span style="color: #808080;">'protocol'</span><span style="color: #000000;">]][</span><span style="color: #808080;">'Nick'</span><span style="color: #000000;">] . </span><span style="color: #808080;">' ('</span><span style="color: #000000;"> . </span><span style="color: #FF8000;">$contact</span><span style="color: #000000;">[</span><span style="color: #808080;">'protocol'</span><span style="color: #000000;">] . </span><span style="color: #808080;">')'</span><span style="color: #000000;">;</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #FF8000;">$export</span><span style="color: #000000;">[] = </span><span style="color: #808080;">''</span><span style="color: #000000;">;</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #FF8000;">$events</span><span style="color: #000000;"> = </span><span style="color: #FF8000;">$MIMDBReader</span><span style="color: #000000;">-&gt;getEventsAfterOffset(</span><span style="color: #FF8000;">$contact</span><span style="color: #000000;">[</span><span style="color: #808080;">'offsets'</span><span style="color: #000000;">][</span><span style="color: #808080;">'firstEvent'</span><span style="color: #000000;">]);</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (</span><span style="color: #FF8000;">$events</span><span style="color: #000000;"> </span><span style="color: #0000FF;">as</span><span style="color: #000000;"> </span><span style="color: #FF8000;">$event</span><span style="color: #000000;">) {</span><br />
<span style="color: #000000;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000;">$export</span><span style="color: #000000;">[] = date(</span><span style="color: #808080;">'Y-m-d H:i:s'</span><span style="color: #000000;">, </span><span style="color: #FF8000;">$event</span><span style="color: #000000;">[</span><span style="color: #808080;">'timestamp'</span><span style="color: #000000;">]) . </span><span style="color: #808080;">' '</span><span style="color: #000000;"> . ((</span><span style="color: #FF8000;">$event</span><span style="color: #000000;">[</span><span style="color: #808080;">'flags'</span><span style="color: #000000;">]==</span><span style="color: #FF0000;">2</span><span style="color: #000000;">)?</span><span style="color: #808080;">'Sent'</span><span style="color: #000000;">:</span><span style="color: #808080;">'Recv'</span><span style="color: #000000;">) .&nbsp; </span><span style="color: #808080;">' '</span><span style="color: #000000;"> . </span><span style="color: #FF8000;">$event</span><span style="color: #000000;">[</span><span style="color: #808080;">'text'</span><span style="color: #000000;">];</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #000000;">}</span><br />
<span style="color: #000000;">&nbsp; &nbsp; </span><span style="color: #FF8000;">$export</span><span style="color: #000000;">[] = </span><span style="color: #808080;">''</span><span style="color: #000000;">;</span><br />
<span style="color: #000000;">}</span><br />
<span style="color: #000000;">file_put_contents</span><span style="color: #000000;">(</span><span style="color: #808080;">'export.txt'</span><span style="color: #000000;">, implode(</span><span style="color: #808080;">&quot;\r\n&quot;</span><span style="color: #000000;">, </span><span style="color: #FF8000;">$export</span><span style="color: #000000;">));</span><br />
</div>
<h1>简介</h1>
<p>MIM DB Reader 是一个可以读取 Miranda IM 数据库的 PHP 类。因此你可以获得联系人设置、聊天记录等有用的信息。</p>
<h1>方法</h1>
<h2>bool open ( string filename )</h2>
<p>打开一个数据库 (并读取头信息)。成功返回 TURE,失败返回 FALSE。</p>
<h2>array getHeader ( )</h2>
<p>获得数据库头。</p>
<pre>array(
&nbsp;&nbsp;signature => 结构标识 (Miranda ICQ DB\x00\x1A)
&nbsp;&nbsp;version => 数据库版本 (当前为 0x00000700)
&nbsp;&nbsp;ofsFileEnd => 文件结尾的偏移量
&nbsp;&nbsp;slackSpace => 浪费空间的字节数
&nbsp;&nbsp;contactCount => 联系人数
&nbsp;&nbsp;ofsFirstContact => 第一个联系人的偏移量
&nbsp;&nbsp;ofsUser => 
&nbsp;&nbsp;ofsFirstModule => 第一个模块的偏移量
)</pre>
<h2>array getModuleByOffset ( int offset )</h2>
<p>根据偏移量获得模块。</p>
<pre>array(
&nbsp;&nbsp;signature => 结构标识 (0x4DDECADE)
&nbsp;&nbsp;ofsNext => 下一个模块的偏移量
&nbsp;&nbsp;cbModuleName => 模块名称的长度
&nbsp;&nbsp;moduleName => 模块名称
)</pre>
<h2>array getContactByOffset ( int offset )</h2>
<p>根据偏移量获得联系人。</p>
<pre>array(
&nbsp;&nbsp;signature => 结构标识 (0x43DECADE)
&nbsp;&nbsp;ofsNext => 下一个联系人的偏移量
&nbsp;&nbsp;ofsFirstSettings => 第一个设置的偏移量
&nbsp;&nbsp;eventCount => 事件数
&nbsp;&nbsp;ofsFirstEvent => 第一个事件的偏移量
&nbsp;&nbsp;ofsLastEvent => 最后一个事件的偏移量
&nbsp;&nbsp;ofsFirstUnreadEvent => 第一个未读事件的偏移量
&nbsp;&nbsp;timestampFirstUnread => 第一个未读事件的 UNIX 时间戳
)</pre>
<h2>array getContactSettingsByOffset ( int offset )</h2>
<p>根据偏移量获得联系人设置。</p>
<pre>array(
&nbsp;&nbsp;signature => 结构标识 (0x53DECADE)
&nbsp;&nbsp;ofsNext => 下一个设置的偏移量
&nbsp;&nbsp;ofsModule => 模块的偏移量
&nbsp;&nbsp;cbBlob => 数据段的长度
&nbsp;&nbsp;settings => 从数据段中读出的设置,数组 (键=>值)
)</pre>
<h2>array getEventByOffset ( int offset )</h2>
<p>根据偏移量获得事件。</p>
<pre>array(
&nbsp;&nbsp;signature => 结构标识 (0x45DECADE)
&nbsp;&nbsp;ofsPrev => 上一个事件的偏移量
&nbsp;&nbsp;ofsNext => 下一个事件的偏移量
&nbsp;&nbsp;ofsModule => 模块的偏移量
&nbsp;&nbsp;timestamp => 事件发生时间的 UNIX 时间戳
&nbsp;&nbsp;flags => 事件标志 (发送的或已读的)
&nbsp;&nbsp;eventType => 事件类型 (由模块定义)
&nbsp;&nbsp;cbBlob => 数据段的长度
&nbsp;&nbsp;blob => 数据 (格式由模块定义)
)</pre>
<h2>array getAllContacts ( )</h2>
<p>获得所有联系人信息。</p>
<pre>array(
&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;protocol => 联系人所归属的协议的模块名称
&nbsp;&nbsp;&nbsp;&nbsp;offsets => array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact => 联系人的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextContact => 下一个联系人的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstEvent => 联系人的第一个事件的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent => 联系人的最后一个事件的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;settings => array( // 联系人设置
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;module1 => array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key1 => value1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key2 => value2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;module2 => array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key1 => value1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key2 => value2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...
&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;),
&nbsp;&nbsp;...
)</pre>
<h2>array getEventsAfterOffset ( )</h2>
<p>获得联系人在指定偏移量后的所有事件。</p>
<pre>array(
&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;ofsEvent => 事件的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;ofsModule => 模块的偏移量
&nbsp;&nbsp;&nbsp;&nbsp;timestamp => 事件发生时间的 UNIX 时间戳
&nbsp;&nbsp;&nbsp;&nbsp;flags => 事件标志 (发送的或已读的)
&nbsp;&nbsp;&nbsp;&nbsp;type => 事件类型 (由模块定义)
&nbsp;&nbsp;&nbsp;&nbsp;text => 数据 (格式由模块定义,当前取第一个 NUL 字符之前的数据)
&nbsp;&nbsp;),
&nbsp;&nbsp;...
)</pre>
<h1>历史</h1>
<h2>v0.01.0 (04/01/2006)</h2>
<ul type="square">
<li> 最初的公开测试版</li>
</ul>
<h1>作者</h1>
<p>2006, Wudi &lt;<a href="mailto:wudicgi&#64;yahoo&#46;de">wudicgi-at-yahoo.de</a>&gt;, <a href="http://spaces.msn.com/wudicgi" target="_blank">MSN Space</a></p>
<br>
</body>
</html>
Return current item: Miranda IM Database Reader