Jul 26

短信大师导出短信为txt后的一个php整理程序 不指定

felix021 @ 2009-7-26 16:37 [IT » 程序设计] 评论(0) , 引用(0) , 阅读(4345) | Via 本站原创 | |
1. 选中收件箱和发件箱


2. 菜单->操作->导出文本


3. 把导出的短信都放在一个目录下面


4. 在目录下放一个convertencoding.php,内容为:
<?php
$dir = scandir(".");
foreach($dir as $file){
    if(substr($file, -3) != "txt") continue;
    echo $file, "\n";
    $str = file_get_contents($file);
    $str = iconv("GB18030", "UTF-8", $str);
    file_put_contents($file, $str);
}
?>
然后$ php convertencoding.php 运行之。


5. 另一个php脚本,用于提取和指定的人的聊天记录
<?php

$dir = scandir(".");
foreach($dir as $file){
    if (!preg_match("/^\\d*\.txt/", $file)){
        continue;
    }
    echo $file, "\n";
    $sms = convert($file);
    $str = smstofile($sms, "lalala_$file");
}

function smstofile($sms, $filename){
    $fp = fopen($filename, "w");
    if($fp == NULL) {
        echo "error opening\n";
        return false;
    }
    foreach($sms as $msg){
        $str = implode("", $msg['content']);
        fprintf($fp, "%s\n----------------\n", $str);
    }
    fclose($fp);
}

function cmp($i, $j){
    return $i['time'] < $j['time'];
}

function mysort(&$arr, $s, $e, $func){
    $i = $s; $j = $e; $tmp = $arr[$s];
    if($s < $e){
        while($i != $j){
            while($i < $j && $func($tmp, $arr[$j])) $j--;
            if($i < $j){
                $arr[$i] = $arr[$j];
                $i++;
            }
            while($i < $j && $func($arr[$i], $tmp)) $i++;
            if($i < $j){
                $arr[$j] = $arr[$i];
                $j--;
            }
        }
        $arr[$i] = $tmp;
        mysort($arr, $s, $i-1, $func);
        mysort($arr, $i+1, $e, $func);
    }
}

function smsfilter($var){
    return (preg_match("/那个人的电话号码/", $var['content'][1]));
}

function convert($filename){
    if(!is_file($filename)){
        echo "$filename is not a file.\n";
        return false;
    }
    $i = -1;
    $sms = array();
    $lines = file($filename);
    foreach($lines as $line){
        //$line = trim($line);
        if(preg_match("/^时  间:(\\d*)-(\\d*)-(\\d*) (\\d*):(\\d*):(\\d*)\\s+$/"
                    , $line, $m)){
            $i++;
            $sms[$i]["time"] = mktime($m[4], $m[5], $m[6],
                                      $m[2], $m[3], $m[1]);
        }
        $sms[$i]["content"][] = $line;
    }
    $sms = array_filter($sms, smsfilter);
    $sms1 = $sms;
    unset($sms);
    $sms = array();
    foreach($sms1 as $var) $sms[] = $var;
    $cnt = count($sms);
    $j = 1;
    for( ; $j < $cnt; $j++){
        if($sms[$j]['time'] > $sms[$j-1]['time']) break;
    }
    for( ; $j < $cnt; $j++){
        $sms[$j]["content"][1] = "发送者:\"Me\" <+861592640xxxx>\n";
    }
    mysort($sms, 0, count($sms)-1, cmp);
    return $sms;
}
?>
运行之。



欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]