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


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 相关文章推荐
php读取msn上的用户信息类
Dec 05 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
PHP制作万年历
Jan 07 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php empty函数 使用说明
2009/08/10 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
Python实现搜索算法的实例代码
2020/01/02 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
打架检讨书400字
2014/01/17 职场文书
求职信模板怎么做
2014/01/26 职场文书
高中生评语大全
2014/04/25 职场文书
四风问题查摆材料
2014/08/25 职场文书
人事主管岗位职责
2015/02/04 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
Golang实现可重入锁的示例代码
2022/05/25 Golang