大约上个月在PHPChina上接到一次求助:
用PHP将繁体转换为简体,一篇文章会超时。
采用网上流传的版本是针对文章的每个字进行循环查找表,这样带来的问题有:
当文章字数多时,时间开销大;
重复的字也会重复查找;
不在表内的字符也会被查找。
一篇千余字的文章甚至会让PHP超时,那么如何改善性能呢?
换个思路就可以了:
循环文章每个字改为循环字符表。这样的好处有:
文章字数再多,也只循环表包含的字符数;
文章字符重复则一次性替换完,性能和只替换一次几乎没有什么差别;
不会循环不需要替换的字符。
性能的差异是非常明显的。更换方法后时间开销以ms计,之前是以s计。
代码见附件。繁体转简体.zip
附注:
1、附件里的代码针对gbk作了编码转换,如果是UTF-8则不需要转换;
2、此代码依赖于mbstring扩展。
3、正体字不能这么简简单单直接转成简体字,会有很多地方出错,正式场合使用的内容请校对后再使用。
Follow Me