dede由3.x升级为4.x不能导入采集数据的问题

2007年7月12日 | 分类: Web相关技术 | 标签:

dede由3.x升级为4.x时,由于采集规则的改变,导致升级後采集的数据不能正常导入成功。
分析发现是由于co_export_action.php文件的134行的写的有点问题,
$tmpSql1 = ereg_replace(‘@#(.*)#@’,”,$tmpSql1);
使用贪婪模式进行替换,导致
Insert Into dede_archives(typeid,arcrank,channel,title,writer,source,pubdate,sortrank,litpic,senddate,adminID) Values(’1′,’0′,’1′,’@#dede_archives.title#@’,'@#dede_archives.writer#@’,'@#dede_archives.source#@’,'@#dede_archives.pubdate#@’,'@#dede_archives.sortrank#@’,'@#dede_archives.litpic#@’,'@#dede_archives.senddate#@’,’1′);
仅替换为
Insert Into dede_archives(typeid,arcrank,channel,title,writer,source,pubdate,sortrank,litpic,senddate,adminID) Values(’1′,’0′,’1′,”,’1′);
134行应改为
$tmpSql1 = preg_replace(“/@#(.*)#@/U”,”",$tmpSql1);

1、ereg里面是不需要也不能使用分隔符和修饰符的,所以ereg的功能比preg要弱上不少。 
2、关于”.”:点在正则里面一般是除了换行符以外的全部字符,但是在ereg里面的”.”是任意字符,即包括换行符!如果在preg里面希望”.”能够包括换行符,可以在修饰符中加上”s”。 
3、ereg默认使用贪婪模式,并且不能修改,这个给很多替换和匹配带来麻烦。 
4、速度:这个或许是很多人关心的问题,会不会preg功能强大是以速度来换取的?不用担心,preg的速度要远远比ereg快

anyShare分享到:
          
目前还没有任何评论.