一个可以找出源代码中所有中文的工具

小波5718

小波5718

2016-02-19 09:01

下面是个一个可以找出源代码中所有中文的工具教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!
一个可以找出源代码中所有中文的工具

填写需要查找的路径$sf即可。

功能
1 找出所有中文
2 忽略注释语句中的中文
3 可添加需要忽略的文件和文件夹
4 生成日志文件

如果您正发愁为自己的软件更新语言包
请使用此工具。

我的例子:
http://127.0.0.1/tools/searchcn.php
http://127.0.0.1/tools/cnlog.txt
代码如下:

?php
set_time_limit(0);
ob_implicit_flush();

//注释格式
$remark = array(
    array('//debug', "rn")
    , array('/**', '*/')
    , array('/*debug', '*/')
    , array('/*note', '*/')
    , array('//note', "rn")
);

//以下目录和文件不被查询
$filter = 'forumdata|config.inc.php|debug|test|readme|utilities|upgrade|.tpl.php|index.htm|.lang.php';

//项目目录
$sf = 'd:\data\labs\develop\dzhead\';

//日志目录
$logname = 'cnlog.txt';
$langfile = 'lang.php';


$log = fopen($logname, 'w');
fclose($log);

$lf = fopen($langfile, 'wb');
fwrite($lf, "rnrnt'spilt' = '----------------------------------------------------',");
fclose($lf);

$lf = fopen($langfile, 'ab');


$ptag = '\';

findfile($sf);
fwrite($lf, "rn);rnrn?");
fclose($lf);
function findfile($sf){
    global $ptag, $logname, $filter, $lf;
    $log = fopen($logname, 'ab');
    global $remark;
    if(is_dir($sf)) {
        if($dh = opendir($sf)) {

            while(($file = readdir($dh)) !== false) {
                if($file == '.' || $file == '..') {
                    continue;    
                } elseif(filetype($sf.$file) == 'dir') {
                    findfile($sf.$file.$ptag);
                } elseif((preg_match('/.php$/', $file) || preg_match('/.htm$/', $file)) && !preg_match('/('.$filter.')/', $sf.$file)) {

                    $sfp = fopen($sf.$file, 'rb');
                    $buf = fread($sfp, filesize($sf.$file));
                    fclose($sfp);
                    foreach($remark as $v) {
                        $data = '';
                        while(count($strcut = explode($v[0], $buf, 2))  1) {
                            $data .= $strcut[0];
                            if(($strcut = explode($v[1], $strcut[1], 2))  1){
                                $buf = $strcut[1];
                            } else {
                                $buf = $strcut[0];
                                break;
                            }

                        }
                        $data .= $strcut[0];
                        $buf = $data;
                    }
                    $data = $buf;
                    $lines = 0;
                    $cn = $str = '';
                    $cns = 0;
                    $ldata = "rnt'".str_replace('.', '_', $file)."' = '";
                    for($i = 0; $i  strlen($data); $i++){
                        $c = ord($data{$i});
                        if($c == 0x0A || $data{$i+1} == ''){
                            $lines++;
                            if(!empty($cn)){
                                $ldata .= "',";
                                $ldata = str_replace("rnt'".str_replace('.', '_', $file)."' = '',", '', $ldata);
                                fwrite($lf, $ldata);
                                $cn = "rn$lines:".$cn;
                                $str .= $cn;
                                $cn = '';
                                $ldata = "rnt'".str_replace('.', '_', $file)."' = '";
                            }
                        } elseif($c = 0x81 && $c = 0xFE) {
                            $c = ord($data{++$i});
                            if($c = 0x40 && $c = 0xFE) {
                                $cn .= $data{$i-1}.$data{$i};
                                $ldata .= $data{$i-1}.$data{$i};
                                while(($c = ord($data{++$i})) != 0x3C && $c != 0x0A && $c != 0x0D && $c != 0x27 && $c != 0x3E && $c != 0x3B && $c != 0x22 && $c != 0x3D && $c  0x81) {
                                    $space .= chr($c);
                                }
                                $i--;
                                if(ord($data{$i+1})  0x81) {
                                    $cns++;
                                    $cn .= '$';
                                    $ldata .= "',rnt'".str_replace('.', '_', $file)."' = '";
                                } else {
                                    $cn .= $space;
                                }
                                $space = '';
                            }
                        }
                    }
                    if($str != '') {
                        fwrite($log, "n--".$sf.$file."----------------------- (共 $cns 处)");
                        echo "{$sf}$file (共 $cns 处)br";
                        ob_flush();flush();
                        $cns = 0;    
                    }
                    fwrite($log, $str);
                    $str = '';
                }
            }
        }
    }
    fclose($log);

}
?
展开更多 50%)
分享

猜你喜欢

一个可以找出源代码中所有中文的工具

Web开发
一个可以找出源代码中所有中文的工具

一个BBS的源代码(一)

ASP
一个BBS的源代码(一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个BBS的源代码(三)

ASP
一个BBS的源代码(三)

一个BBS的源代码(六)

ASP
一个BBS的源代码(六)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个BBS的源代码(二)

ASP
一个BBS的源代码(二)

一个BBS的源代码(四)

ASP
一个BBS的源代码(四)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

setInterval 和 setTimeout会产生内存溢出

setInterval 和 setTimeout会产生内存溢出

用java生成html文件实现原理及代码

用java生成html文件实现原理及代码
下拉加载更多内容 ↓