前段時間想給自己zencart站群的描述內容做下關鍵詞連接,但是因為關鍵詞太多,所以想寫段程序自動執行這個功能,但是本人的沒有認真學過php語言,所以參考網上很多資料,自己整理了一個函數
<?php
function zen_key_replace($str){
$array_first = array(
array('2012 New UGG Boots','link1.html'),
array('black ugg boots','link2.html'),
array('cheap ugg boots','link3.html'),
array('cheapest ugg boots','link4.html'),
array('discount ugg boots','link5.html'),
array('girls ugg boots','link6.html'),
array('grey ugg boots','link7.html'),
array('ugg boots','link8.html')
);
$array_last = array();
foreach($array_first as $key=>$value){
$array_last[$key] = array('TFXS00'.$key, $value[0], '<a href="'.$value[1].'" title="'.$value[0].'" rel="follow">'.$value[0].'</a>');
}
$count = count($array_last);
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
//如果後一個元素長度大於前一個則調換位置
if(strlen($array_last[$j][1]) > strlen($array_last[$j-1][1])){
$tmp = $array_last[$j];
$array_last[$j] = $array_last[$j-1];
$array_last[$j-1] = $tmp;
}
}
}
$keys=$array_last;
foreach($keys as $nkeys){
$str= str_ireplace($nkeys[1], $nkeys[0], $str);
}
foreach($keys as $nkeys){
$str= str_ireplace($nkeys[0], $nkeys[2], $str);
}
return $str;
}
示例: www.2cto.com
$str ="今天是2012年1月9號,ugg boots網站,seo就是搜索引擎優化了girls ugg boots,css+div,Photoshop,Flash,HTML,CSS,Dreamweaver,Fireworks,ASP,PHP,JSP,ASP.NET";
echo zen_key_replace(stripslashes($str));//在輸出文章內容的地方調用這個函數$str為文章內容
?>
先是一個數組排序,關鍵詞長度長的優先,因為如果相關的短關鍵詞在前面,則長的關鍵詞不會被替換到,如果ugg boot 先替換過了 那麼ugg boot sale 就已經變成TFXS008 sale 就不會被成功替換
然後是一個替換,之所以先替換一遍成TFXS001 是為了在第二次替換的時候不會因為 類似ugg boots 這個常出現的關鍵詞而進行多次替換。。類似2012 New UGG Boots 這種情況。。
以上,自己感覺這個功能還是太簡單了點,還可以加上替換次數控制,把關鍵詞及鏈接數據寫入到數據庫中,但是自己剛起步學習這些東西,很多地方不知道怎麼做,會繼續努力的。