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

填写需要查找的路径$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', "\r\n")
    , array('/**', '*/')
    , array('/*debug', '*/')
    , array('/*note', '*/')
    , array('//note', "\r\n")
);

//以下目录和文件不被查询
$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, "\r\n\r\n\t'spilt' => '----------------------------------------------------',");
fclose($lf);

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


$ptag = '\\';

findfile($sf);
fwrite($lf, "\r\n);\r\n\r\n?>");
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 = "\r\n\t'".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("\r\n\t'".str_replace('.', '_', $file)."' => '',", '', $ldata);
                                fwrite($lf, $ldata);
                                $cn = "\r\n$lines:".$cn;
                                $str .= $cn;
                                $cn = '';
                                $ldata = "\r\n\t'".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 .= "',\r\n\t'".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);

}
?>
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。