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


Posted in PHP onOctober 25, 2006

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

填写需要查找的路径$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); 
} 
?>
PHP 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
destoon各类调用汇总
Jun 20 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
《APMServ 5.1.2》使用图解
Oct 23 #PHP
APMServ使用说明
Oct 23 #PHP
别人整理的服务器变量:$_SERVER
Oct 20 #PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 #PHP
PHP新手上路(十)
Oct 09 #PHP
来自PHP.NET的入门教程
Oct 09 #PHP
PHP新手上路(九)
Oct 09 #PHP
You might like
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
Python中类型关系和继承关系实例详解
2015/05/25 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
会计专业应届生求职信
2013/11/24 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
安全教育演讲稿
2014/05/09 职场文书
欢迎领导标语
2014/06/27 职场文书
踏青活动策划方案
2014/08/19 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
食品药品安全责任书
2015/05/11 职场文书