广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-10-07 10:23:40 次阅读 稿源:互联网
    零七广告
    一个可以找出源代码中所有中文的工具

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

    }
    ?>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告