[php] 게시판용 클래스(함수 모음)
로빈아빠
본문
게시판용 클래스(함수 모음)
phpshool 에서 가져온 것입니다.
너무나 깔끔이 잘 정리 되어 있군요.. 보통 제로보드 함수를 많이 가져다 셨는데..
중복 된것도 많지만 양이 상당하군요..
phpshool 에서 가져온 것입니다.
너무나 깔끔이 잘 정리 되어 있군요.. 보통 제로보드 함수를 많이 가져다 셨는데..
중복 된것도 많지만 양이 상당하군요..
<? /*====================================================================================================== //////////// ///// /////////// ///// /////// /////////// //// // //// // /// // // /// ////////// /// /// //////////// /// // // /// ///////// //////////// /// /// // // /// //////// /// ///..///.............///.... ////..../// ======================================================================================================*/ class BoardFn { var $current_money; /*=========================================================================== @@ 함수명 : orderBy() $val : 값(pdf:자료형, normal:답변글이 없는 형태의 게시판, ramification:다단답변형 게시판) ## 쿼리할때 orderBy 다음에 넘겨줄 문장을 결정한다. =============================================================================*/ function orderBy($val){ switch($val){ case(category) : $result .= "uid DESC"; break; default : $result .= "$val"; } return $result; } /*=========================================================================== @@ 함수명 : searchDate() $string : 최근 6개월 :sixmonth, 최근1년:oneyear, 전체:alldate ## 검색할 기간을 설정한다. =============================================================================*/ function searchDate($string){ // 전체 검색이면 바로 빠져나간다. if($string=="alldate" || !$string){ return false; } // 조건이 있을때 if($string=="6m") $forday = 180; else if($string=="1y") $forday = 365; $today = mktime(0,0,0,date(m),date(d),date(Y)) - ($forday*86400); $today_date = date("Y-m-d", $today); $result = "(date_format(signdate, '%Y-m-d%') >= $today_date)"; return $result; } /*=========================================================================== @@ 함수명 : replyRe() $sort : 글 깊이 $depth : 리플 밀림정도 제한숫자 $icon : 답변임을 알리는 아이콘이미지 ## 이 글의 답변이 쓰여진 깊이에 따라 아이콘 및 [re]문자 및 문자를 추가한다. =============================================================================*/ function replyRe($sort,$depth,$icon=""){ if($sort<1 || $sort==0) { return false; } // sort > 0 if($sort < $depth) { for ($i=1; $i<=$sort; $i++) { $rlt .= " "; } $result = $rlt.$icon."[re]"; } else { for ($i=1; $i<= $depth; $i++) { $rlt .=" "; } $result = $rlt.$icon."[re]"; } return $result; } /*=========================================================================== @@ 함수명 : percentage() $string : 적용시킬대상 $keyword: 검색어 ## 찾고자 하는 문자와의 정확도 ## 100% =============================================================================*/ function percentage($string,$keyword){ $result .= similar_text($string,$keyword,&$p); return $result; } /*=========================================================================== @@ 함수명 : fontColor() $string : 적용시킬대상 $color : 선택된칼라 $arr : 칼라배열 ## 문자에 칼라를 적용한다. 찾고자 하는 문자와의 정확도 $i = similar_text($list[subject],$keyword,&$p); $percent = " ($p%)"; =============================================================================*/ function fontColor($color,$string){ if($color || isset($color)){ $result .= "<font color='$color'>$string</font>"; }else { $result .= "<font color='#666666'>$string</font>"; } return $result; } /*============================================================================================= @@ 함수명 : fontKeyColor $val : 검색필드의 내용 $keywords : 검색어 ## 현재 공백 [ ]를 기준으로 3개까지 검색이 된다. ===============================================================================================*/ function fontKeyColor($keywords,$val) { if(!$keywords){ return false; } $keywords = urldecode($keywords); $keywords = trim($keywords); $keywords = ereg_replace("([ ]+)"," ",$keywords); if(!ereg(" ",$keywords)) $KeyWords = "$keywords"; ## 키워드가 1개일때 else $KeyWords = explode(" ",$keywords); ## 키워드가 복수일때 $count = count($KeyWords); ## 키워드 카운트 if($count==1) { $result= str_replace("$KeyWords", "<font color='red'><b>$KeyWords</b></font>", $val); }else { $rt = str_replace("$KeyWords[0]","<font color='red'><b>$KeyWords[0]</b></font>", $val); $rt = str_replace("$KeyWords[1]","<font color='red'><b>$KeyWords[1]</b></font>", $rt); $rt = str_replace("$KeyWords[2]","<font color='red'><b>$KeyWords[2]</b></font>", $rt); $result = str_replace("$KeyWords[3]","<font color='red'><b>$KeyWords[3]</b></font>", $rt); } return $result; } /*=========================================================================== @@ 함수명 : fontSize() $size : 폰트사이즈 $string : 적용시킬대상 ## 문자에 사이즈를 바꾼다. =============================================================================*/ function fontSize($size,$string) { switch($size){ case(1) : $result .= "<font size='3'>$string</font>"; break; case(2) : $result .= "<font size='4'>$string</font>"; break; default : $result .= $string; } return $result; } /*=========================================================================== @@ 함수명 : fontBold() $bold : 볼드 적용여부(1:볼드, 0:보통) $string : 적용시킬대상 ## 제목에 칼라를 적용한다. =============================================================================*/ function fontBold($bold,$string) { switch($bold){ case(1) : $result .= "<b>$string</b>"; break; default : $result .= $string; } return $result; } /*=========================================================================== @@ 함수명 : newIcon() $forday : 아이콘을 출력시켜줄 기간 $signdate : 등록일 $icon : 적용시킬아이콘 ## 뉴 아이콘 적용 =============================================================================*/ function newIcon($forday,$signdate,$icon) { $rgdate = str_replace(" ","-",$signdate); $value = str_replace(":","-",$rgdate); $re_value = explode("-",$value); $date_num = mktime($re_value[3],$re_value[4],$re_value[5],$re_value[1],$re_value[2],$re_value[0]); $today = mktime(0,0,0,date(m),date(d),date(Y)) - ($forday*86400); if($date_num<=$today) $result .= ""; else $result .= $icon; return $result; } /*=========================================================================== @@ 함수명 : hidden() $val : 감출 값 $hidden : 감출것인지 아닌지 $adminlevel : 관리자 등급 $icon : 아이콘 $level : 설정해놓은 등급 ## 뉴 아이콘 적용 =============================================================================*/ function hidden($val,$hidden,$adminlevel,$level,$icon) { if($hidden>0 && $level<$adminlevel) { $result .= $icon; } else{ $autolink = $this->autoLink($val); $result = $autolink; } return $result; } /*=========================================================================== @@ 함수명 : cutString() $str : 문자열 $len : 자를 길이 ## $len의 길이로 $str이라는 문자열을 자른다. ## 한글을 한바이트 단위로 잘르는 경우를 막고 대문자가 많이 쓰인 경우 소문자와의 크기 비율 정도(1.5?)에 따라 문자열을 자름 =============================================================================*/ function cutString($str, $len) { ## 넘어온 문자열이 자를려는 것보다 작거나 1글자이면 리턴 if(strlen($str) <= $len && !eregi("^[a-z]+$", $str)) return $str; for($i = $len; $i >=1; $i--) { # 끝에서부터 한글 byte수를 센다. if($this->check_hangul($str[$i-1])) $hangul++; else break; } if ($hangul) { # byte수가 홀수이면, 한글의 첫번째 바이트이다. # 한글의 첫번째 바이트일 때 깨지는 것을 막기 위해 지정된 길이를 한 바이트 줄임 if ($hangul%2) $len--; $str = chop(substr($str, 0, $len)); } else { # 문자열의 끝이 한글이 아닐 경우 for($i = 1; $i <= $len; $i++) { # 대문자의 갯수를 기록 if($this->check_alpha($str[$i-1]) == 2) $alpha++; # 마지막 한글이 나타난 위치 기록 if($this->check_hangul($str[$i-1])) $last_han=$i; } # 지정된 길이로 문자열을 자르고 문자열 끝의 공백 문자를 삭제함 # 대문자의 길이는 1.3으로 계산한다. 문자열 마지막의 영문 문자열이 # 빼야할 전체 길이보다 크면 초과된 만큼 뺀다. $capitals = intval($alpha * 0.5); if ( ($len-$last_han) <= $capitals) $capitals=0; $str = chop(substr($str, 0, $len - $capitals)); $srt = $str; } return $str."..."; } /*=========================================================================== @@ 함수명 : autoLink() $str : 문자열 ## $str의 값에 자동으로 링크를 시켜준다. =============================================================================*/ function autoLink($str) { global $color; $regex[http] = "(http|https|ftp|telnet|news):\/\/([a-z0-9_\-]+\.[][a-zA-Z0-9:;@=_~%\?\/\.\,\+\-]+)"; $regex[mail] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\._\-]+)"; // < 로 열린 태그가 그 줄에서 닫히지 않을 경우 nl2br()에서 <BR> 태그가 // 붙어 깨지는 문제를 막기 위해 다음 줄까지 검사하여 이어줌 $str = eregi_replace("<([^<>\n]+)\n([^\n<>]+)>", "<\\1 \\2>", $str); // 특수 문자와 링크시 target 삭제 $str = eregi_replace("&(quot|gt|lt)","!\\1",$str); $str = eregi_replace("([ ]*)target=[\"'_a-z,A-Z]+","", $str); $str = eregi_replace("([ ]+)on([a-z]+)=[\"'_a-z,A-Z\?\.\-_\/()]+","", $str); // html사용시 link 보호 $str = eregi_replace("<a([ ]+)href=([\"']*)($regex[http])([\"']*)>","<a href=\"\\4_orig://\\5\" target=\"_blank\">", $str); $str = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[mail])([\"']*)>","<a href=\"mailto:\\4#-#\\5\">", $str); $str = eregi_replace("<img([ ]*)src=([\"']*)($regex[http])([\"']*)","<img src=\"\\4_orig://\\5\"",$str); // 링크가 안된 url및 email address 자동링크 $str = eregi_replace("($regex[http])","<a href=\"\\1\" target=\"_blank\">\\1</a>", $str); $str = eregi_replace("($regex[mail])","<a href=\"mailto:\\1\">\\1</a>", $str); // 보호를 위해 치환한 것들을 복구 $str = eregi_replace("!(quot|gt|lt)","&\\1",$str); $str = eregi_replace("http_orig","http", $str); $str = eregi_replace("#-#","@",$str); // link가 2개 겹쳤을때 이를 하나로 줄여줌 $str = eregi_replace("(<a href=([\"']*)($regex[http])([\"']*)+([^>]*)>)+<a href=([\"']*)($regex[http])([\"']*)+([^>]*)>","\\1", $str); $str = eregi_replace("(<a href=([\"']*)mailto:($regex[mail])([\"']*)>)+<a href=([\"']*)mailto:($regex[mail])([\"']*)>","\\1", $str); $str = eregi_replace("</a></a>","</a>",$str); return $str; } /*=========================================================================== @@ 함수명 : replaceUrl() $url : URL ## $type에 맞게 URL을 변환한다. ## $type=1 일 경우 -> URL앞에 http:// 를 붙이다. ## $type=0 일 경우 -> URL앞에 http:// 를 없앤다. =============================================================================*/ function replaceUrl($url, $type=1) { $url = trim($url); ## 기본적으로 넘어온 URL에 프로토콜을 나타내는 부분이 있는지 확인하여 http:// 를 붙인다. if(!eregi("^(http://|https://|ftp://|telnet://|news://)", $url)) { $url = eregi_replace("^", "http://", $url); } $url = eregi_replace("http.*://", "", $url); ## 넘어온 $type 에 따라서 URL 변경 $url = $type ? eregi_replace("^", "http://", $url) : $url; return $url; } /*=========================================================================== @@ 함수명 : download() $file : 파일경로 ## 파일을 다운로드 받을 수 있도록 한다. =============================================================================*/ function download($file) { header("Content-type:application/octet-stream"); Header("Content-Disposition:attachment;filename=".$file.""); header("Content-Transfer-Encoding:binary"); header("Pragma:no-cache"); header("Expires:0"); if(is_file($file)) $fp=fopen($file,"r"); if(!fpassthru($fp)) fclose($fp); return true; } /*======================================================================== @함수명 : filePrint $filesrc = 파일경로 $realfile = 아이콘 클릭시 사용될 파일경로 $filename = 파일명 $type = 1:image, 2:file $wsize = 이미지 가로크기 $hsize = 이미지 세로크기 $name = 이미지명 $is_file = 실제 서버측 절대경로 ## GetImageSize 이미지 사이즈를 알아내는 것임 =======================================================================*/ function filePrint($filesrc,$filename,$wsize,$hsize,$type=1,$name="",$is_file="",$realfile="") { if(!$filename || !is_file("$is_file/$filename")) { return false; } $filewhere = $filesrc.$filename; $file = explode(".",$filename); $extention = strtolower($file[1]); if($type==1) { if($extention=="swf") { $result .="<embed src='$filewhere' menu=false quality=high width=$wsize TYPE=application/x-shockwave-flash></embed>"; }else if($extention=="gif" || $extention=="jpeg" || $extention=="jpg" || $extention=="png"){ $img_size = GetImageSize($filewhere); $width = $img_size[0]; ## 이미지의 넓이를 알 수 있음 $height = $img_size[1]; ## 이미지의 높이를 알 수 있음 $image_type = $img_size[2]; ## 이미지의 type를 알 수 있음 ## 넓이 if($width > $wsize){ $w = $wsize; }else { $w = $width; } ## 높이 if($height > $hsize){ $h = $hsize; }else { $h = $height; } $result .=("<img src='$filewhere' border='0' width='$w' height='$h' hspace='5' vspace='5' NAME='$name'"); } }else { // 파일 형식에 맞는 아이콘 출력 switch($extention){ case(gif) : $rlt .= "<img src='".$filesrc."icon_gif.gif' border='0'>"; break; case(jpg) : $rlt .= "<img src='".$filesrc."icon_jpg.gif' border='0'>"; break; case(jpeg) : $rlt .= "<img src='".$filesrc."icon_jpeg.gif' border='0'>"; break; case(swf) : $rlt .= "<img src='".$filesrc."icon_swf.gif' border='0'>"; break; case(hwp) : $rlt .= "<img src='".$filesrc."icon_hwp.gif' border='0'>"; break; case(txt) : $rlt .= "<img src='".$filesrc."icon_txt.gif' border='0'>"; break; case(doc) : $rlt .= "<img src='".$filesrc."icon_doc.gif' border='0'>";   php사랑이 헉 짤리네요 09/22 16:12:47 php사랑이 짤린 부분부터입니다. /*======================================================================== @함수명 : filePrint $filesrc = 파일경로 $realfile = 아이콘 클릭시 사용될 파일경로 $filename = 파일명 $type = 1:image, 2:file $wsize = 이미지 가로크기 $hsize = 이미지 세로크기 $name = 이미지명 $is_file = 실제 서버측 절대경로 ## GetImageSize 이미지 사이즈를 알아내는 것임 =======================================================================*/ function filePrint($filesrc,$filename,$wsize,$hsize,$type=1,$name="",$is_file="",$realfile="") { if(!$filename || !is_file("$is_file/$filename")) { return false; } $filewhere = $filesrc.$filename; $file = explode(".",$filename); $extention = strtolower($file[1]); if($type==1) { if($extention=="swf") { $result .="<embed src='$filewhere' menu=false quality=high width=$wsize TYPE=application/x-shockwave-flash></embed>"; }else if($extention=="gif" || $extention=="jpeg" || $extention=="jpg" || $extention=="png"){ $img_size = GetImageSize($filewhere); $width = $img_size[0]; ## 이미지의 넓이를 알 수 있음 $height = $img_size[1]; ## 이미지의 높이를 알 수 있음 $image_type = $img_size[2]; ## 이미지의 type를 알 수 있음 ## 넓이 if($width > $wsize){ $w = $wsize; }else { $w = $width; } ## 높이 if($height > $hsize){ $h = $hsize; }else { $h = $height; } $result .=("<img src='$filewhere' border='0' width='$w' height='$h' hspace='5' vspace='5' NAME='$name'"); } }else { // 파일 형식에 맞는 아이콘 출력 switch($extention){ case(gif) : $rlt .= "<img src='".$filesrc."icon_gif.gif' border='0'>"; break; case(jpg) : $rlt .= "<img src='".$filesrc."icon_jpg.gif' border='0'>"; break; case(jpeg) : $rlt .= "<img src='".$filesrc."icon_jpeg.gif' border='0'>"; break; case(swf) : $rlt .= "<img src='".$filesrc."icon_swf.gif' border='0'>"; break; case(hwp) : $rlt .= "<img src='".$filesrc."icon_hwp.gif' border='0'>"; break; case(txt) : $rlt .= "<img src='".$filesrc."icon_txt.gif' border='0'>"; break; case(doc) : $rlt .= "<img src='".$filesrc."icon_doc.gif' border='0'>"; break; case(xls) : $rlt .= "<img src='".$filesrc."icon_xls.gif' border='0'>"; break; case(ppt) : $rlt .= "<img src='".$filesrc."icon_ppt.gif' border='0'>"; break; case(pdf) : $rlt .= "<img src='".$filesrc."icon_pdf.gif' border='0'>"; break; default : $rlt .= "<img src='".$filesrc."icon_zip.gif' border='0'>"; } $result .= "<a href='".$realfile.$filename."' target='blink'>".$rlt."</a>"; } return $result; } /*----------------------------------------------------- @@함수명 : check_hangul $char : 값 ## $char이 한글인지 체크 ---------------------------------------------------------*/ function check_hangul($char) { // 특정 문자가 한글의 범위내(0xA1A1 - 0xFEFE)에 있는지 검사 $char = ord($char); if($char >= 0xa1 && $char <= 0xfe) { return 1; } return; } /*----------------------------------------------------- @@함수명 : check_alpha $char : 값 ## 영문인지 체크 ## 반환값 : 2(대문자), 1(소문자), 0(영문아님) ---------------------------------------------------------*/ function check_alpha($char) { $char = ord($char); if($char >= 0x61 && $char <= 0x7a) { return 1; } if($char >= 0x41 && $char <= 0x5a) { return 2; } return; } /*=========================================================================== @@ 함수명 : replaceString() $content : 내용 $type : TEXT/HTML/HTML+TEXT ## $type에 맞추어 $content의 값을 변경시킨다. =============================================================================*/ function replace_string($content, $type="TEXT") { // $type를 대문자로전환 $type = strtoupper($type); if($type=="TEXT") { $content = stripslashes($content); $content = htmlspecialchars($content); $content = eregi_replace("\r\n", "\n", $content); $content = eregi_replace("\n", "<br>", $content); $content = $this->autoLink($content); } elseif($type=="HTML") { $content = stripslashes($content); $content = ereg_replace("\"","", $content); $content = ereg_replace("\'","", $content); $content = ereg_replace("<\?", "<?", $content); $content = ereg_replace("\?>", "?>", $content); $content = ereg_replace("<\%", "<%", $content); $content = ereg_replace("\%>", "%>", $content); $content = ereg_replace("<(SCRIPT)(^>]*)>", "<\\1\\2>", $content); $content = ereg_replace("<\(SCRIPT)>", "</\\1>", $content); $content = ereg_replace("<(XMP)(^>]*)>", "<\\1\\2>", $content); $content = ereg_replace("</(XMP)>", "</\\1>", $content); } elseif($type=="HTML+TEXT"){ $content = stripslashes($content); $content = eregi_replace("\r\n", "\n", $content); $content = eregi_replace("\n", "<br>", $content); $content = ereg_replace("\"","", $content); $content = ereg_replace("\'","", $content); $content = ereg_replace("<\?", "<?", $content); $content = ereg_replace("\?>", "?>", $content); $content = ereg_replace("<\%", "<%", $content); $content = ereg_replace("\%>", "%>", $content); } return $content; } } ?>
관련링크
댓글목록
등록된 댓글이 없습니다.