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


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 相关文章推荐
PHP5 的对象赋值机制介绍
Aug 02 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
详解PHP swoole process的使用方法
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
一个程序下载的管理程序(三)
2006/10/09 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php curl基本操作详解
2013/07/23 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
js停止输出代码
2008/07/20 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
利用Python优雅的登录校园网
2020/10/21 Python
COSETTE官网:奢华,每天
2020/03/22 全球购物
一份Java笔试题
2012/02/21 面试题
小学生自我评价范例
2013/09/24 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
校园安全广播稿
2014/02/08 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
Linux中sftp常用命令整理
2022/06/28 Servers