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


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创建动态图像
Oct 09 PHP
我的论坛源代码(四)
Oct 09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php密码生成类实例
Sep 24 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
php实现微信支付之企业付款
May 30 PHP
php判断数组是否为空的实例方法
May 10 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 中文乱码解决办法总结分析
2009/07/30 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
JS中数据结构之栈
2019/01/01 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
python实现线程池的方法
2015/06/30 Python
Python正则捕获操作示例
2017/08/19 Python
numpy数组拼接简单示例
2017/12/15 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
六查六看剖析材料
2014/10/06 职场文书
小学教学工作总结2015
2015/05/13 职场文书
2015年女工委工作总结
2015/07/27 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书