php替换一次(结合志凡和redstone)的修改! 不指定

Else , 2010/04/26 16:18 , 工蚁的忙碌工作 , Comments(0) , Reads(366) , Via Original
昨天晚上去志凡的网站,看到一他写的一个函数
原文地址:
http://coderhome.net/code/index.php?id=159


function str_replace_once($needle, $replace, $haystack) {  
  
    return preg_replace('/' . preg_quote($needle,'/') . '/', $replace,$haystack,1);  
  
}  



redstone 原来的代码,用正则替换,img和title中有关键字不会被替换 (之前bo-blog的一些插件也碰到这样的问题!)效果是全文的,,
不过我在处理一个站的时候 全文被替换了,然后就被K了,呵呵



function changekeyword($str, $keyword, $url) {
    $a = "<a href=\"$url\">$keyword</a>";
    $str = preg_replace("/(([^>][^\"])($keyword)([^<]))/is", "\\2$a\\4", $str);
    $str = preg_replace('/(title|alt)=("?[^<]+)'.str_replace('/', '\\/', $a).'([^>]+?"?)/i', "\\1=\\2$keyword\\3", $str);
    return $str;
}


昨天经过测试后,我结合两个,改成


function str_replace_once($str, $keyword, $url,$limit=1) {

     $a = "<a href=\"$url\">$keyword</a>";
     $str = preg_replace("/(([^>][^\"])($keyword)([^<]))/is", "\\2$a\\4", $str,$limit);
     $str = preg_replace('/(title|alt)=("?[^<]+)'.str_replace('/', '\\/', $a).'([^>]+?"?)/i', "\\1=\\2$keyword\\3", $str);
    return $str;

}



文章中的"网站",就是演示的效果!

http://www.sofut.com/articles/40.htm

这样的网站,在用关键字,索引关键字,优化的效果就出来了!
Add a comment

Nickname

Site URI

Email

Enable HTML Enable UBB Enable Emots Hidden Remember [Login] [Register]