고수님들 질문드립니다 게시판 링크걸고 걸린링크 클릭시 이동하게 할수잇나요
본문
특정 게시판 글작성시 제목에 예를들어 네이버-https://naver.com 작성하고 네이버 클릭하면 바로 네이버로 넘어갈수 잇는 링크 게시판 만들수 잇을가요 ? 만약 가능하다면 아래 게시판 코드에서 어디부분 수정하면 될가요
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
?>
<? //방지
if($re){
$re_row = sql_fetch(" select * from g5_write_{$bo_table} where wr_id = '{$re}' ");
$re1 = strtotime(date('Y-m-d H:i:s')); //현재 시간
$re2 = strtotime('+3 hours',strtotime($re_row['wr_datetime'])); //등록된 시간 + 3 hours
if($re_row['wr_datetime']){
if($re1 > $re2){
sql_query(" update g5_write_{$bo_table} set wr_datetime = '".G5_TIME_YMDHIS."', wr_hit = '0' where wr_id = '{$re}' ");
sql_query(" update g5_board_new set bn_datetime = '".G5_TIME_YMDHIS."' where wr_id = '{$re}' and bo_table = '{$bo_table}' ");
alert($lang['list_re_text']);
}else{
alert('Eroor');
}
}
}
?>
<!-- 게시판 목록 시작 { -->
<div id="bo_list" style="width:<?php echo $width; ?>">
<form name="fboardlist" id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="spt" value="<?php echo $spt ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="sw" value="">
<div class="tbl_head01 tbl_wrap">
<table>
<caption><?php echo $board['bo_subject'] ?> 목록</caption>
<thead>
<tr>
<?php if ($is_checkbox) { ?>
<th scope="col">
<label for="chkall" class="sound_only">현재 페이지 게시물 전체</label>
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);">
</th>
<?php } ?>
<th scope="col"><?=$lang['bd_th1']?></th>
<th scope="col"><?=$lang['bd_th2']?></th>
<th scope="col"><?=$lang['bd_th3']?></th>
<?php if ($is_good) { ?><th scope="col"><?php echo subject_sort_link('wr_good', $qstr2, 1) ?>추천 <i class="fa fa-sort" aria-hidden="true"></i></a></th><?php } ?>
<?php if ($is_nogood) { ?><th scope="col"><?php echo subject_sort_link('wr_nogood', $qstr2, 1) ?>비추천 <i class="fa fa-sort" aria-hidden="true"></i></a></th><?php } ?>
<th scope="col"><?=$lang['bd_th4']?></th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $i<count($list); $i++) {
?>
<tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">
<?php if ($is_checkbox) { ?>
<td class="td_chk">
<label for="chk_wr_id_<?php echo $i ?>" class="sound_only"><?php echo $list[$i]['subject'] ?></label>
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>">
</td>
<?php } ?>
<td class="td_datetime">
<? //지역
$code1 = explode("|",$lang['rgn_code']); //대응된 코드
$ctxt1 = explode("|",$lang['rgn_list']); //선택된 언어로 대체
for($y=0;$y<count($code1);$y++){
if($list[$i]['wr_1'] == $code1[$y]){
echo $ctxt1[$y];
}
}
?>
</td>
<td class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px">
<div class="bo_tit">
<? if ($wr_id == $list[$i]['wr_id']) echo "<span class=\"bo_current\">".$lang['list_read']."</span>"; ?>
<? if ($list[$i]['is_notice']){ ?>
<? echo '<strong class="notice_icon">['.$lang['write_notice'].']</strong>'; ?>
<? }else{ ?>
<? if ($list[$i]['mb_id'] == $member['mb_id']){ ?>
<?
$ty1 = strtotime(date('Y-m-d H:i:s')); //현재 시간
$ty2 = strtotime('+3 hours',strtotime($list[$i]['wr_datetime'])); //등록된 시간 + 3 hours
$ty = $ty2 - $ty1; //시간차
//echo $ty;
$th_hourse = intval(abs($ty)/3600); //나머지 시간
$th_minute = intval(abs($ty)%3600/60); //나머지 분
if($ty1 > $ty2){
?>
<a href="<?=$_SERVER['REQUEST_URI']?>&re=<?=$list[$i]['wr_id']?>" class="re_load">[<?=$lang['list_re']?>]</a>
<? }else{ ?>
<a href="javascript:;" onclick="alert('<?=$lang['list_re_alt'].$th_hourse.$lang['list_re_alt_text1'].$th_minute.$lang['list_re_alt_text2']?> ')" class="re_load">[<?=$lang['list_re']?>]</a>
<? } ?>
<? } ?>
<? } ?>
<a href="<?php echo $list[$i]['href'] ?>">
<?php echo $list[$i]['icon_reply'] ?>
<?php
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
?>
<?php echo $list[$i]['subject'].$list[$i]['is_notice']; ?>
</a>
<?php
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
if (isset($list[$i]['icon_new'])) echo rtrim($list[$i]['icon_new']);
if (isset($list[$i]['icon_hot'])) echo rtrim($list[$i]['icon_hot']);
?>
</div>
</td>
<td class="td_datetime">
<? //분류
$code2 = explode("|",$lang['cate_code']); //대응된 코드
$ctxt2 = explode("|",$lang['cate_list']); //선택된 언어로 대체
for($y=0;$y<count($code2);$y++){
if($list[$i]['ca_name'] == $code2[$y]){
echo $ctxt2[$y];
}
}
?>
</td>
<?php if ($is_good) { ?><td class="td_num"><?php echo $list[$i]['wr_good'] ?></td><?php } ?>
<?php if ($is_nogood) { ?><td class="td_num"><?php echo $list[$i]['wr_nogood'] ?></td><?php } ?>
<td class="td_datetime"><?php echo substr($list[$i]['wr_datetime'],0,10) ?></td>
</tr>
<?php } ?>
<?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">'.$lang['list_search'].'</td></tr>'; } ?>
</tbody>
</table>
</div>
<?php if ($list_href || $is_checkbox || $write_href) { ?>
<div class="bo_fx">
<?php if ($list_href || $write_href) { ?>
<ul class="btn_bo_user">
<?php if ($is_checkbox) { ?>
<li><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value" class="btn btn_admin"><i class="fa fa-trash-o" aria-hidden="true"></i> <?=$lang['list_choice_del']?></button></li>
<?php } ?>
<?php if ($list_href) { ?><li><a href="<?php echo $list_href ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i> <?=$lang['list_home']?></a></li><?php } ?>
</ul>
<?php } ?>
</div>
<?php } ?>
</form>
</div>
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>
<!-- 페이지 -->
<?php echo $write_pages; ?>
<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
var f = document.fboardlist;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]")
f.elements[i].checked = sw;
}
}
function fboardlist_submit(f) {
var chk_count = 0;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
chk_count++;
}
if (!chk_count) {
alert("<?=$lang['list_choice_text']?>");
return false;
}
if(document.pressed == "선택삭제") {
if (!confirm("<?=$lang['list_choice_del_text']?>"))
return false;
f.removeAttribute("target");
f.action = "./board_list_update.php";
}
return true;
}
</script>
<?php } ?>
<!-- } 게시판 목록 끝 -->
답변 3
제목에 홈페이지 주소가 있다고 가정하고 아래의 코드를 참고해서 보세요..
본문 내용이든 뭐든 정규식으로 하면 모두 적용 가능 합니다.
http와 https모두 작동 되게 했습니다.
$view['wr_subject'] = "네이버와 다음에 방문해 보세요 https://www.naver.com http://www.daum.net";
$view['wr_subject'] = preg_replace("/(https?:\/\/[^\s]+)/", '<a href="$1" class="클래스명" target="_blank">$1</a>', $view['wr_subject']);
echo $view['wr_subject'];
등록시
if(strpos($_REQUEST['subject'], "http://") !== false){
$chk_subject = explode("http://", $_REQUEST['subject']);
$subject_link = "//".$chk_subject[1];
}
와
if(strpos($_REQUEST['subject'], "https://") !== false){
$chk_subject = explode("https://", $_REQUEST['subject']);
$subject_link = "//".$chk_subject[1];
}