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); } ?>
一个可以找出源代码中所有中文的工具
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@