帝国CMS建站
,帝国CMS
,帝国
,程序代码如下:$str='帝国CMS建站管理系统,最安全的网站建设系统'; $keyboard = '帝国CMS建站,帝国CMS,帝国'; $kr = explode(',',$keyboard); foreach($kr as $v){ $str=str_replace($v,'[url=http://www.dgmoban.com]'.$v.'[/url]',$str); } 输出的结果步骤源代码为: 1、[url=http://www.dgmoban.com]帝国CMS建站[/url]管理系统,最安全的网站建设系统 2、[url=http://www.dgmoban.com]帝国CMS[/url]建站管理系统,最安全的网站建设系统 3、[url=http://www.dgmoban.com]帝国[/url]CMS建站管理系统,最安全的网站建设系统 |
从结果我们可以看出,有多个相同的关键字被连续替换了,这样出现的结果是会造成页面的错乱,那么该如何来解决这个问题呢!解决思路如下:
仔细观察我们发现当中是有一定规律的,它们的规律是:class="infotextkey">
关键字,所以我们可以利用这个特性来做一下修改,修改如下:
$str='帝国CMS建站管理系统,最安全的网站建设系统'; $keyboard = '帝国CMS建站,帝国CMS,帝国'; $kr = explode(',',$keyboard); foreach($kr as $v) { if(strpos($str,'class="infotextkey">'.$v)==false){ $str=str_replace($v,'[url=http://www.dgmoban.com]'.$v.'[/url]',$str); } } |
//替换关键字 UTF-8版 function ReplaceKey($newstext,$classid=0){ global $empire,$dbtbpre,$public_r,$class_r; if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;} $where=''; if(!empty($class_r[$classid]['keycid'])){ $where=" where cid='".$class_r[$classid]['keycid']."'"; } $sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey".$where); while($r=$empire->fetch($sql)){ if(strpos($newstext,'class="infotextkey">'.$r[keyname])==false) { if (STR_IREPLACE) { $newstext = empty($public_r[repkeynum]) ? str_ireplace($r[keyname], '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext) : preg_replace('/' . $r[keyname] . '/i', '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext, $public_r[repkeynum]); } else { $newstext = empty($public_r[repkeynum]) ? str_replace($r[keyname], '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext) : preg_replace('/' . $r[keyname] . '/i', '<a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a>', $newstext, $public_r[repkeynum]); } } } return $newstext; } |
$str1='有可'; if (strstr($str1 , '锌')) { echo '找到了!'; }else{ echo '没找到!'; } |
//替换关键字 GBK版 function ReplaceKey($newstext,$classid=0){ global $empire,$dbtbpre,$public_r,$class_r; if(empty($newstext)||$class_r[$classid]['keycid']==-1){return $newstext;} $where=''; if(!empty($class_r[$classid]['keycid'])){ $where=" where cid='".$class_r[$classid]['keycid']."'"; } $sql=$empire-> query("select keyname,keyurl from {$dbtbpre}enewskey".$where); $newstext2 = iconv('GBK','UTF-8',$newstext); while($r=$empire->fetch($sql)){ if (strpos($newstext2 , iconv('GBK','UTF-8',$r[keyname])) !== false) { if (strpos($newstext, 'class="infotextkey">' . $r[keyname]) == false) { if (STR_IREPLACE) { $newstext = empty($public_r[repkeynum]) ? str_ireplace($r[keyname], ' <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a> ', $newstext) : preg_replace('/' . $r[keyname] . '/i', ' <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a> ', $newstext, $public_r[repkeynum]); } else { $newstext = empty($public_r[repkeynum]) ? str_replace($r[keyname], ' <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a> ', $newstext) : preg_replace('/' . $r[keyname] . '/i', ' <a href=' . $r[keyurl] . ' target=_blank class=infotextkey>' . $r[keyname] . '</a> ', $newstext, $public_r[repkeynum]); } } } } return $newstext; } |
新闻热点
疑难解答