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

2016-02-19 09:01 50 1 收藏

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

【 tulaoshi.com - Web开发 】

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

填写需要查找的路径$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:datalabsdevelopdzhead';

//日志目录
$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);

}
?

来源:https://www.tulaoshi.com/n/20160219/1589180.html

延伸阅读
界面是防明小子的那个扫描工具写的,算是学习多线程的一个例子把 界面图示: http://www.wrsky.com/attachment/3_1875.jpg 程序和源代码: http://downloads.2ccc.com/general/internet_lan/hnxyy_scan.rar 使用D7编写,主要部分代码: //主界面部分 unit1.pas unit...
标签: Web开发
代码如下: script language="JavaScript" !-- var bsYear;   var bsDate;   var bsWeek;   var arrLen=8;    //数组长度 var sValue=0;    //当年的秒数 var dayiy=0;    //当年第几天 var miy=...
using System; using System.Windows.Forms; using System.Drawing; using System.Drawing.Drawing2D; using System.ComponentModel; namespace wzsbmain {  /// <summary  /// Summary description for LabelGradient.  /// </summary     public class wzsbmainLabel : System.Windows.Forms.Label &nbs...
标签: Web开发
New Document aa aa aa
标签: PHP
  其实写这几篇代码的时间不过近三天而已,事前即没有经过详细思考和计划(可以说一点计划都没有)那天想起做个论坛试试,于是就做起来了,而我也是才接触了将近一个月时间的PHP,以前也没真正写过程序之类的东东,在写这段代码的两天半时间里,有好几次遇到困难,都想放弃,但是我还是写出来了,而且没想到居然能用,所以中间可能有很多...

经验教程

402

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部