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


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 相关文章推荐
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
中篇:安装及配置PHP
Dec 13 PHP
PHP图片上传代码
Nov 04 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
php基本函数汇总
Jul 09 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
简单分析python的类变量、实例变量
2019/08/23 Python
Python如何使用函数做字典的值
2019/11/30 Python
python实现电子词典
2020/03/03 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
秘书岗位职责
2013/11/18 职场文书
2014年教师节寄语
2014/04/03 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
工作检讨书范文
2015/01/23 职场文书
教代会开幕词
2015/01/28 职场文书
小学班主任自我评价
2015/03/11 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
厉行节约工作总结
2015/08/12 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python