개발시 유용한 함수 라이브러리

//
// Author : Spectator(Kim Kwan Joong)
//

// require나 include시 중복선언 방지를 위한 부분
if( !$__FUNC_PHP__ )
{
$__FUNC_PHP__ = 1;

// 처음 몇개는 자바스크립트를 처리하는 함수입니다.
// 실제로 가장 자주 사용되는 함수들이죠.
// (일일이 입력하는 노가다란…-_-;)

// GoBack() : 이전페이지로 바로 갑니다.
// GoBack($msg) : $msg를 경고메시지로 출력하고 갑니다.

function GoBack($msg = “”)
{
echo “
“;
}

// CloseWin() : 현재 윈도우창을 닫습니다.
// CloseWin($msg) : $msg를 경고메시지로 출력하고 닫습니다.
// CloseWin($msg,1) :
// $msg를 경고메시지로 출력하고 원래 자신을 연 부모윈도우를
// Reload시킵니다. (바뀐 내용을 적용시킬때 사용)

function CloseWin($msg = “”, $refresh = 0)
{
echo “
“;
}

// GoTo($url) : 현재 페이지를 $url로 대치시킵니다.
// 현재 페이지는 history상에 남지 않습니다.
// (입력받은 정보를 DB등에 저장하고 난 뒤에 다른 페이지로 이동할때
// 저장하는 페이지가 히스토리에 남으면 “뒤로”를 눌렀을 때 좋지
// 않은 일이 발생하겠죠…)
// GoTo($url, $msg) : $msg를 경고메시지로 출력하고 이동합니다.
// GoTo($url, $msg, $target) : $msg를 경고메시지로 출력하고
// $target에 해당하는 프레임을 $url로 대치시킵니다.

function GoTo($url, $msg = “”, $target = “”)
{
echo “
“;
}

// Alert($msg) : 단순히 $msg를 경고메시지로 출력합니다.
// (확인을 누르면 계속 그 뒤의 처리를 계속합니다)

function Alert($msg)
{
echo “
“;
}

// FreadAll($filename) : $filename에 해당하는 파일내용 전체를 읽어서
// 문자열로 리턴해줍니다. (비슷한 readfile()이나 file()함수가 있지만
// readfile()은 무조건 표준출력으로 가고 file()은 각 행이 배열로
// 읽혀지기 때문에 전체파일을 지정한 변수로 읽어들일 때는 이 함수를
// 사용합니다.)

function FreadAll($filename)
{
if( !file_exists($filename) )
return “”;

$fp = fopen($filename, “r”);
$text = fread($fp, filesize($filename));
fclose($fp);

return $text;
}

// FwriteAll($filename, $text) : FreadAll()과 반대로 $text 문자열
// 전체를 $filename으로 된 파일로 저장합니다.

function FwriteAll($filename, $text)
{
$fp = fopen($filename, “w”);
$ret = fwrite($fp, $text);
fclose($fp);

return $ret;
}

// html_format($text) : 본문의 일부로 나오는 내용이 전체 html에
// 영향을 미치는 것을 막거나 특정태그의 사용을 방지하기 위해
// 화면에 출력하기 전에 태그를 무효화시킬 때 사용하는 함수입니다.
// (Daum에서 특정태그를 방지하는 것을 보고 만들어봤습니다.)
// 기본적으로 nl2br()로 행구분을
로 처리합니다.
// html_format($text, 0) : nl2br()처리만 하지 않습니다.

function html_format($text, $break = 1)
{
$text = stripslashes($text);
$text = ereg_replace(“ $text = ereg_replace(“?>”, “?>”, $text);
$text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ $text = eregi_replace(“ // ereg_replace(” “,” “, $text)처럼 사용하게 되면
// 브라우저에서 자동 행구분을 못해주기 때문에 문자열의 길이만큼
// 표의 폭이 늘어나거나 하는 부작용이 생길 수 있습니다.
// 이 부분은 필요에 따라 사용하시면 됩니다.
$text = ereg_replace(” “,” “,$text);

if( $break )
$text = nl2br($text);

return $text;
}

// LongCut($s, $l) : 문자열 $s를 $l만큼 잘라내고 “…”을 뒤에
// 붙여줍니다. 게시판 리스트 등에서 긴 문자열을 짧게 보여줄 때
// 사용합니다. 무조건 잘라내면 한글이 중간에 걸렸을 때 “?”로
// 처리되기 때문에 뒤에서부터 스캔해서 잘리지 않도록 처리했습니다.

function LongCut($s, $l)
{
if( strlen($s) <= ($l+3) )
return $s;

if( ord($s[$l-1]) > 127 )
{
$nc = 2;
while( ord($s[$l-$nc]) > 127 )
$nc++;
$l -= !($nc & 1);
}

return substr($s, 0, $l) . “…”;
}

// ParseSession($sess) : $sess로 받은 세션값(서버상에 저장되는 파일)
// 을 name => value로 이루어진 array로 리턴합니다.
// 회원인증을 세션으로 처리한다고 해도 현재 접속해 있는 회원들이
// 누가 있는지 알아보려고 하면 서버에 저장되어 있는 세션파일들을
// 직접 읽어들여 처리하지 않으면 알 길이 없어서 세션파일을 분석한
// 끝에 만들어봤습니다. 왜 이 함수가 제공되지 않는지 궁금하군요.
// 만약 $sess가 ‘id|s:5:”guest”;name|s:6:”방문자”;’ 이렇게 돼있을때
// $buf = ParseSession($sess);
// => $buf[id] = “guest”; $buf[name] = “방문자”; 이렇게 됩니다.

function ParseSession($sess)
{
$p = explode(“;”, $sess);
$m = count($p);

for($i=0; $i < ($m-1); $i++)
{
for($k=$i; !strstr($p[$i+1], “|”) && (($i+1) < $m); $i++)
$p[$k] .= “;” . $p[$i+1];

$t[] = $p[$k];
}

$n = count($t);

for($i=0; $i < $n; $i++)
{
$t1 = explode(“|”, $t[$i]);
$t2 = explode(“:”, $t1[1]);
$buf[$t1[0]] = substr($t2[2], 1, $t2[1]);
}

return $buf;
}

// GetExtension($filename) : $filename에서 마지막 “.”이후의
// 확장자만 잘라서 소문자로 리턴한다.

function GetExtension($filename)
{
$filename = trim($filename);
$right = strrchr($filename, “.”);

return strtolower(substr($right,1));
}

// GetOtherName($filename) : $filename이 “name.ext” 일 경우
// “name1.ext”를 리턴해줍니다. 업로드된 파일을 저장하려고 할 때
// 동일한 파일이 있을 경우 이런 식으로 이름부분에만 1을 붙여서
// 저장함으로써 확장자가 그대로 적용되도록 할 수 있습니다.

function GetOtherName($filename)
{
$filename = trim($filename);
$l_all = strlen($filename);
$right = strrchr($filename, “.”);
$l_left = $l_all – strlen($right);

return substr($filename,0,$l_left) . “1” . $right;
}

} // End of if( !$__FUNC_PHP__ )