헐랭이님의 백과사전 소스 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

헐랭이님의 백과사전 소스 정보

헐랭이님의 백과사전 소스

본문

<?
/*************************************************************************
* 키워드 관련 기능 시작
**************************************************************************/
 $gboard_bo_1 = $board['bo_1'];
 $date_board = explode(",",$gboard_bo_1);
 $date_board_1 = $date_board[0];
 $date_board_2 = $date_board[1];
 $date_board_3 = $date_board[2];
 $date_board_4 = $date_board[3];
 $date_board_5 = $date_board[4];
 $date_board_6 = $date_board[5];
 $date_board_7 = $date_board[6];
 $date_board_8 = $date_board[7];
 $date_board_9 = $date_board[8];
 $date_board_10 = $date_board[9];
 if ($date_board_1 =="on"){
?>
<!-- 키워드기능 링크 스타일 -->
<style type="text/css">
a.dics_link:link, a.dics_link:active, a.dics_link:visited {
color:<?=$date_board_5?>;
text-decoration:none;
border-bottom:0px dashed;
}
a.dics_link:hover {
color:<?=$date_board_8?>;
text-decoration:none;
border-bottom:<?=$date_board_10?>px dashed;
}
</style>
<?
$dic_id =$date_board_2;
$bod_table_name =$g4['write_prefix'];
$gnudic_board ="".$bod_table_name."".$dic_id."";
$dic_result =mysql_query("select wr_subject, wr_id, wr_link1 from $gnudic_board");
if ($date_board_3 =="1"){
$i=0;
while($dic_data=mysql_fetch_array($dic_result)) {
  $local_keyword[$i] = "/".trim($dic_data[0])."/i";
  $local_link[$i] = "<a class='dics_link' href=\"javascript:win_comment('$board_skin_path/dic_view.php?bo_table=$dic_id&wr_id=".trim($dic_data[1])."');\" title='".trim($dic_data[0])." 사전보기'>".trim($dic_data[0])."</a>";
  $i++;
    }
 $view[content] =preg_replace($local_keyword,$local_link,$view[content]);
}
else if ($date_board_3 =="2"){
$i=0;
while($dic_data=mysql_fetch_array($dic_result)) {
  $local_keyword[$i] = "/".trim($dic_data[0])."/i";
 $local_link[$i] = "<a class='dics_link' href='".trim($dic_data[2])."' title='".trim($dic_data[0])."(으)로 이동합니다' target='".$date_board_4."'>".trim($dic_data[0])."</a>";
  $i++;
  }
 $view[content] =preg_replace($local_keyword,$local_link,$view[content]);
}
else if ($date_board_3 =="3"){
$i=0;
while($dic_data=mysql_fetch_array($dic_result)) {
  $local_keyword[$i] = "/".trim($dic_data[0])."/i"; 
  $local_link[$i] = "<a class='dics_link' href='".$g4[url]."/".$g4[bbs]."/board.php?bo_table=".$dic_id."&wr_id=".trim($dic_data[1])."' title='".trim($dic_data[0])."(으)로 이동합니다' target='".$date_board_4."'>".trim($dic_data[0])."</a>";
  $i++;
    }
  $view[content] =preg_replace($local_keyword,$local_link,$view[content]);
 }
 else if($date_board_3 =="4"){
 $i=0;
while($dic_data=mysql_fetch_array($dic_result)) {
  $local_keyword[$i] = "/".trim($dic_data[0])."/i"; 
  $local_link[$i] = "<a class='dicm_link' href='".$g4[url]."/".$g4[bbs]."/search.php?srows=&gr_id=&sfl=wr_subject%7C%7Cwr_content&stx=".trim($dic_data[0])."' title='".trim($dic_data[0])."(으)로 사이트내에서 검색을 합니다' target='".$date_board_4."'>".trim($dic_data[0])."</a>";
  $i++;
    }
  $view[content] =preg_replace($local_keyword,$local_link,$view[content]);
}
 else if($date_board_3 =="5"){
 $view_wr_1 = get_text($view[wr_1]);
 $view_wrm_1 = explode(",",$view_wr_1);
for ($i=0; $i<count($view_wrm_1); $i++) {
  $view[content]= str_replace("$view_wrm_1[$i]", "<a class='dicm_link' href='".$g4[url]."/".$g4[bbs]."/search.php?srows=&gr_id=&sfl=wr_subject%7C%7Cwr_content&stx={$view_wrm_1[$i]}' title='".$view_wrm_1[$i]." (으)로 사이트내에서 검색을 합니다' target='".$date_board_4."'>$view_wrm_1[$i]</a>", $view[content]);
  }
 }
 else if($date_board_3 =="6"){
 $view_link_1 =$view[wr_link1];
 if ($view_link_1){
  $view_link_c =$view_link_1;
  }else {
  $view_link_c ="{$g4[bbs_path]}/board.php?bo_table={$bo_table}";
  }
 $write_wr_1 = get_text($view[wr_1]);
 $write_wrm_1 = explode(",",$write_wr_1);
for ($i=0; $i<count($write_wrm_1); $i++) {
  $view[content]= str_replace("$write_wrm_1[$i]", "<a class='dicm_link' href='".$view_link_c."' title='".$write_wrm_1[$i]."(으)로 이동합니다'  target='".$date_board_4."'>$write_wrm_1[$i]</a>", $view[content]);
  }
 }
}
/*************************************************************************
* 키워드 관련 기능 끝
**************************************************************************/
?>


여기 보시면 헐랭이님의 백과사전 소스 인데요.

특정 단어에 대해 링크를 걸어주는 기능인데, 만약 글 본문에 축구 라는 단어에 링크를 걸게 된다면, 축구라는 단어에 계속 걸리게 되는데, 10개든 100개든 처음 나오는 한개에만 걸수는 없을까요?

댓글 전체

맨아래 부분 for 구문 관련 구문이 있군요

$write_wr_1 = get_text($view[wr_1]);
 $write_wrm_1 = explode(",",$write_wr_1);
for ($i=0; $i<count($write_wrm_1); $i++) {
  $view[content]= str_replace("$write_wrm_1[$i]", "<a class='dicm_link' href='".$view_link_c."' title='".$write_wrm_1[$i]."(으)로 이동합니다'  target='".$date_board_4."'>$write_wrm_1[$i]</a>", $view[content]);

위와 같은 부분이 있습니다.

1.텍스트만 가져와서 $write_wr_1 에 넣고
2.explode로 $write_wrm_1 에 배열로 넣습니다. (0,1,2,3,4... )
3.for 를 0에서 $write_wrm_1 의 숫자만큼 돌고
4.for를 수행하는동안 $view[content]를 링크로 바꿔줍니다. (0 부터 카운트한 숫자보다 작을때까지)

위와같은 수행을 바꿔주시려면 4번만 수정하시면 되겠네요

for ($i=0; $i<count($write_wrm_1); $i++) {
  $view[content]= str_replace("$write_wrm_1[$i]", "<a class='dicm_link' href='".$view_link_c."' title='".$write_wrm_1[$i]."(으)로 이동합니다'  target='".$date_board_4."'>$write_wrm_1[$i]</a>", $view[content]);
  }

위와같은 구문 대신 for 문을 빼고

  $view[content]= str_replace("$write_wrm_1[0]", "<a class='dicm_link' href='".$view_link_c."' title='".$write_wrm_1[$i]."(으)로 이동합니다'  target='".$date_board_4."'>$write_wrm_1[$i]</a>", $view[content]);

위와같이 하면 처음 나온 단어(explode 한 배열에 0 번째) 만 링크하는게 되겠군요
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT