帝国系统的文章模型,是将文章内容存储在d目录下的txt目录里面,并且是以php文件存储,这样做的目的,无非就是让读取更快,这样直接存储文件目录到到数据库,然后通过路径找到这个文件,这样读取文章当然要快,如果是做小说这样的站,的确是很好,但是,这样我们有的时候想批量修改一下文章中的一些字符什么的,就麻烦了一点,因为不能通过sql语句来替换了,如果存在数据库,可以用UPDATE table_name
SET field_name
= replace (field_name
,’from_str’,'to_str’) WHERE …… 说明: table_name —— 表的名字 field_name —— 字段名 from_str —— 需要替换的字符串 to_str —— 替换成的字符串这样来做,但是现在,我们只能写个功能来读取这些文件并替换了。
下面是我写的这个功能,当然其实也可以提取封装一下,至少可以把要替换的这个字符提出来,可以随意填写,不过,因为我们现在仅仅是想替换一些字符,所以就先这样写了一个1.php,直接放到d目录下,替换了一下分页符;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php set_time_limit(0); //文件权限要可读可写 //替换的目录,替换的字符,替换后的字符 function recurDir($dir,$txt='',$new='') { if(is_dir($dir)) { if($handle = opendir($dir)) { while(false !== ($file = readdir($handle))) { if(is_dir($dir.'/'.$file)) { if($file != '.' && $file != '..') { $path = $dir.'/'.$file; recurDir($path,$txt,$new); } }else{ $path = $dir.'/'.$file; change($path,$txt,$new); } } } closedir($handle); } } function change($dir,$txt='',$new=''){ $f = file_get_contents($dir); if(strpos($f,$txt)){ $f = str_ireplace($txt,$new,$f); file_put_contents($dir,$f); echo $dir.'<br />'; } } recurDir('txt','[!--empirenews.page--]'); |
其实很简单,就是遍历目录,因为现在这个目录里面就只有php文件,所有没有加判断,这个功能是给大家借鉴一下,如果需要,可以改一下,加一下文件判断等等。
程序本天成,妙手偶得之!我们只是代码的搬运工!
转载请注明:http://www.521php.com/archives/1429/
2013年09月16日 下午 8:57 泰安期货 | 引用 | #1
好复杂的编程,看不懂有木有,我还是算了吧,有问题求助老师。