ホームページ  >  記事  >  バックエンド開発  >  記事にキーワードリンクを自動的に追加するためのphpの実装コード

記事にキーワードリンクを自動的に追加するためのphpの実装コード

WBOY
WBOYオリジナル
2016-07-25 08:57:361217ブラウズ
  1. /**
  2. * 記事のキーワードと内部リンクを追加します
  3. * by bbs.it-home.org
  4. */
  5. $link = array(
  6. 'Baidu,http://www.baidu.com/',
  7. 'dedecms,http://bbs. it-home.org/',
  8. );
  9. $str = 'Baidu で 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*}
  24. usort ( $linkMap, '_sortDesc' );
  25. $tmpKwds = array ();
  26. foreach ( $linkMap as $i => $ row )
  27. {
  28. list ( $kwd, $url ) = $row;
  29. for($j = $i + 1; $j < count ( $linkMap ); $j ++)
  30. {
  31. $subKwd = $ linkMap [$j] [0];
  32. //他のキーワードが含まれている場合は、一時的に他の文字列に置き換えます
  33. if (strpos ( $kwd, $subKwd ) !== false)
  34. {
  35. $tmpKwd = '{' . ( $subKwd ) . '}';
  36. $kwd = str_replace ( $subKwd, $tmpKwd, $kwd );
  37. $tmpKwds [$tmpKwd] = $subKwd;
  38. }
  39. }
  40. //テキストをリンクに置き換えます
  41. $str = preg_replace ( '/(' . $row [0] . ')/suit', '' . $kwd . ' ', $str, $count );
  42. }
  43. //サブキーワードを置換する文字列を back
  44. foreach ( $tmpKwds as $tmp => $kwd ) {
  45. $str = str_replace ( $tmp , $kwd, $str );
  46. }
  47. return $str;
  48. }
  49. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。