首頁  >  文章  >  後端開發  >  php自動為文章加上關鍵字連結的實作程式碼

php自動為文章加上關鍵字連結的實作程式碼

WBOY
WBOY原創
2016-07-25 08:57:361217瀏覽
  1. /**
  2. * 添加文章关键词,内链
  3. * by bbs.it-home.org
  4. */
  5. $link = array(
  6. ‘百度,http://www.baidu.com/’,
  7. ‘dedecms,http://bbs.it-home.org/’,
  8. );
  9. $str = ‘在百度中搜索dedecms’;
  10. $out = keylink ( $str, $link, 1 );
  11. //$str 原始字符 $link,替换链接数组, 3替换次数
  12. echo $out;
  13. function _sortDesc($a, $b) {
  14. return (strlen ( $a [0] ) < strlen ( $b [0] )) ? 1 : – 1;
  15. }
  16. function keylink($str, $link, $count = 1) {
  17. $linkDefs = $link;
  18. $linkMap = array ();
  19. foreach ( $linkDefs as $row ) {
  20. $linkMap [] = explode ( ‘,’, $row );
  21. }
  22. foreach ( $linkMap as $row ) {
  23. $str = preg_replace ( ‘/(s*)(‘ . $row [0] . ‘)(s*)/sui’, ‘’, $str );
  24. }
  25. usort ( $linkMap, ‘_sortDesc’ );
  26. $tmpKwds = array ();
  27. foreach ( $linkMap as $i => $row )
  28. {
  29. list ( $kwd, $url ) = $row;
  30. for($j = $i + 1; $j < count ( $linkMap ); $j ++)
  31. {
  32. $subKwd = $linkMap [$j] [0];
  33. //如果包含其他关键字,暂时替换成其他字符串
  34. if (strpos ( $kwd, $subKwd ) !== false)
  35. {
  36. $tmpKwd = ‘{‘ . md5 ( $subKwd ) . ‘}’;
  37. $kwd = str_replace ( $subKwd, $tmpKwd, $kwd );
  38. $tmpKwds [$tmpKwd] = $subKwd;
  39. }
  40. }
  41. //把文字替换成链接
  42. $str = preg_replace ( ‘/(‘ . $row [0] . ‘)/sui’, ‘’ . $kwd . ‘’, $str, $count );
  43. }
  44. //把代替子关键字的字符串替换回来
  45. foreach ( $tmpKwds as $tmp => $kwd ) {
  46. $str = str_replace ( $tmp, $kwd, $str );
  47. }
  48. return $str;
  49. }
  50. ?>
复制代码


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn