php自動給文章加關(guān)鍵詞鏈接的函數(shù)代碼
更新時間:2012年11月29日 21:13:39 投稿:mdxy-dxy
自動給文章加關(guān)鍵詞鏈接的php函數(shù)代碼,需要的朋友可以參考下
復(fù)制代碼 代碼如下:
<?php
function _sortDesc($a, $b) {
return (strlen($a[0]) < strlen($b[0])) ? 1 : -1;
}
function keylink($str,$link,$count=1)
{
$linkDefs = $link;
$linkMap = array();
foreach($linkDefs as $row) {
$linkMap[] = explode(',', $row);
}
foreach($linkMap as $row) {
$str = preg_replace('/(<a.*?>\s*)('.$row[0].')(\s*<\/a>)/sui', '${2}', $str);
}
usort($linkMap, '_sortDesc');
$tmpKwds = array();
foreach($linkMap as $i=>$row) {
list($kwd, $url) = $row;
for($j=$i+1; $j<count($linkMap); $j++) {
$subKwd = $linkMap[$j][0];
//如果包含其他關(guān)鍵字,暫時替換成其他字符串
if(strpos($kwd, $subKwd) !== false) {
$tmpKwd = '{'.md5($subKwd).'}';
$kwd = str_replace($subKwd, $tmpKwd, $kwd);
$tmpKwds[$tmpKwd] = $subKwd;
}
}
//把文字替換成鏈接
$str = preg_replace('/('.$row[0].')/sui', '<a href="'.$row[1].'" target="_blank">'.$kwd.'</a>', $str, $count);
}
//把代替子關(guān)鍵字的字符串替換回來
foreach($tmpKwds as $tmp=>$kwd) {
$str = str_replace($tmp, $kwd, $str);
}
return $str;
}
?>
相關(guān)文章
Apache+PHP+MySQL搭建PHP開發(fā)環(huán)境圖文教程
這篇文章主要介紹了Apache+PHP+MySQL搭建PHP開發(fā)環(huán)境圖文教程,文中通過圖文流程介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08一致性哈希算法以及其PHP實(shí)現(xiàn)詳細(xì)解析
以下是對用PHP實(shí)現(xiàn)一致性哈希算法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-08-08php之static靜態(tài)屬性與靜態(tài)方法實(shí)例分析
這篇文章主要介紹了php之static靜態(tài)屬性與靜態(tài)方法,以實(shí)例形式較為詳細(xì)的分析了php靜態(tài)屬性與靜態(tài)方法的概念與相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07PHP PDO和消息隊列的個人理解與應(yīng)用實(shí)例分析
這篇文章主要介紹了PHP PDO和消息隊列的個人理解與應(yīng)用,結(jié)合實(shí)例形式分析了PHP pdo與消息隊列相關(guān)配置、使用方法及操作注意事項,需要的朋友可以參考下2019-11-11PHP單例模式Singleton Pattern的原理與實(shí)現(xiàn)介紹
單例就是單實(shí)例的意思,即在系統(tǒng)全局,一個類只創(chuàng)建一個對象,并且在系統(tǒng)全局都可以訪問這個對象而不用重新創(chuàng)建。本文將通過示例為大家詳細(xì)講解Java單例模式的使用,需要的可以參考一下2023-03-03PHP實(shí)現(xiàn)的多進(jìn)程控制demo示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的多進(jìn)程控制demo,涉及php信號處理與進(jìn)程控制相關(guān)操作技巧,需要的朋友可以參考下2019-07-07