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


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定时自动生成静态HTML的实现代码
Jun 20 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
php跨域cookie共享使用方法
Feb 20 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP实现的ID混淆算法类与用法示例
Aug 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
论坛头像随机变换代码
2006/10/09 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
微信小程序实现吸顶特效
2020/01/08 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
python黑魔法之编码转换
2016/01/25 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python pygame实现方向键控制小球
2019/05/17 Python
安装docker-compose的两种最简方法
2019/07/30 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
python3判断IP地址的方法
2021/03/04 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
如何开启linux的ssh服务
2013/06/03 面试题
2014年图书馆工作总结
2014/11/25 职场文书
2015感人爱情寄语
2015/02/26 职场文书
教师工作表现自我评价
2015/03/05 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书