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


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 相关文章推荐
综合图片计数器
Oct 09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
PHP中的Session对象如何使用
Sep 25 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php四种定界符详解
Feb 16 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
php和vue配合使用技巧和方法
May 09 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
文件上传的实现
2006/10/09 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
JS控制表格隔行变色
2006/06/26 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
详解Python如何获取列表(List)的中位数
2016/08/12 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python 字符串池化的前提
2020/07/03 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
教师求职信范文分享
2013/12/27 职场文书
中学生自我鉴定
2014/02/04 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
英语导游词
2015/02/13 职场文书
会议简讯范文
2015/07/20 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android