0
 829   42   9
  View Articles

Name  
   seipina  (2004-12-19 23:31:55, Hit : 7501, Vote : 1269)
Subject  
   라이브러리에 관해..
안녕 하세요!
프로그래밍을 하면서 의문이 생겼는데, 라이브러리,유틸등 어떻게 찾아보는 것인지요?
잘 찾아볼수만 있으면 프로그래밍에 상당히 도움이 많이 될듯한데 책에서 찾아보아도 라이브러리 함수등.. 개념적인 부분밖에 안나오네요.
실제로 무엇무엇이 있고 필요할때 쓰고싶은데 어떻게 해야 할까요?
막연하기만 합니다.


손병목
안녕하세요. 손병목입니다. 답변이 좀 늦었습니다.
어떤 언어를 사용해서 프로그래밍하시는지 모르겠지만, 각 언어마다 상용 또는 사용자들이 직접 만들어 공유하는 라이브러리들이 참 많습니다.
그러나 제가 프로그래머가 아니어서 잘 모르겠지만 PHP와 관련된 공개 라이브러리는 그 수가 그리 많지 않은 것 같습니다. GD 라이브러리나 기타 그래픽 라이브러리 등이 있지만 제가 사용할 기회가 거의 없었고, 차트 작성 라이브러리, 서로 다른 종류의 DB에 연결할 수 있도록 만든 라이브러리 등도 있습니다.
그리고 프로그래밍하면서 자주 사용하는 것들을 함수처럼 모아 두고 사용하는 경우도 있습니다.
아래는 김관중님이 자주 쓰신다는 라이브러리입니다.

//
// Filename : FUNC.PHP (그냥 제가 쓰는 파일명입니다.)
// Author : Spectator(Kim Kwan Joong)
//


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


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


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

function GoBack($msg = "")
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
echo "history.back();n";
echo "// -->n</script>n";
}


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

function CloseWin($msg = "", $refresh = 0)
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
if( $refresh )
echo "opener.location.reload();n";
echo "top.close();n";
echo "// -->n</script>n";
}


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

function GoTo($url, $msg = "", $target = "")
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
if( $target )
echo $target . ".";
echo "location.replace('" . $url . "');n";
echo "// -->n</script>n";
}


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

function Alert($msg)
{
echo "<script language=javascript>n<!--n";
echo "alert('" . $msg . "');n";
echo "// -->n</script>n";
}


// 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()로 행구분을 <br>로 처리합니다.
// html_format($text, 0) : nl2br()처리만 하지 않습니다.

function html_format($text, $break = 1)
{
$text = stripslashes($text);
$text = ereg_replace("<?", "<?", $text);
$text = ereg_replace("?>", "?>", $text);
$text = eregi_replace("<html", "<x-html", $text);
$text = eregi_replace("</html", "</x-html", $text);
$text = eregi_replace("<body", "<x-body", $text);
$text = eregi_replace("</body", "</x-body", $text);
$text = eregi_replace("<head", "<x-head", $text);
$text = eregi_replace("</head", "</x-head", $text);
$text = eregi_replace("<title", "<x-title", $text);
$text = eregi_replace("</title", "</x-title", $text);
$text = eregi_replace("<script", "<x-script", $text);
$text = eregi_replace("</script", "</x-script", $text);
$text = eregi_replace("<form", "<x-form", $text);
$text = eregi_replace("</form", "</x-form", $text);
$text = eregi_replace("<select", "<x-select", $text);
$text = eregi_replace("</select", "</x-select", $text);
$text = eregi_replace("<textarea", "<x-textarea", $text);
$text = eregi_replace("</textarea", "</x-textarea", $text);
$text = eregi_replace("<input", "<x-input", $text);

// 공백만큼 공간을 넓혀주기 위한 부분입니다.
// 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__ )
 2004/12/21 09:50:35    


no
subject
name
date
hit
*
669
  PHP 게시판 만드는 도중 문제가 생겼... [1]

허창민
2005/03/13 8081 1554
668
  도와주세요~~쿼리문이 잘안되네요. [1]

이지성
2005/03/08 7602 1500
667
  사용자 인터페이스(ui) 구현에 관해서 [2]

seipina
2005/03/03 7589 1434
666
  운영자의 프로필을 보며~ [1]

이지성
2005/03/03 7332 1472
665
  하이링크 김태영 입니다 운영자님 검토바... [1]

김태영
2005/02/23 7470 1465
664
  안녕하세요 ^^ 강의 잘 보고 갑니다. [1]

암시로
2005/02/09 7078 1240
663
  두개의 콤보박스링크하기 [1]

신입생
2005/02/07 7840 1286
662
  PHP게시판 만들기2를 계속하지 않는가... [2]

서영승
2005/01/25 7946 1269
661
  스크립트 언어에 대해 [2]

유비쿼터스
2005/01/22 6618 1311
660
  파일이름을 다시 줄려면 어떻게 하나요? [1]

이재선
2005/01/15 7664 1494
659
  테이블 설계에 대해서 [2]

이재선
2005/01/13 7624 1552
658
  넹~~ 그런데 [1]

이재선
2005/01/13 6975 1243
657
  다시 질문 올립니다. [2]

이재선
2005/01/10 6771 1253
656
  JDBC, ODBC에 대해 궁금해요 ^^; [1]

강수봉
2005/01/10 7155 1282
655
  갤러리를 만들려고 합니다. [1]

이재선
2005/01/09 7118 1264
654
  한 수 부탁드립니다. [2]

임춘식
2005/01/02 7103 1337
653
  웹서버에 관한 질문입니다. [4]

봉이
2004/12/30 6783 1219
652
  게시판에 관해서 [8]

석수정
2004/12/22 10203 1497

  라이브러리에 관해.. [1]

seipina
2004/12/19 7501 1269
650
  운영체제에 관한 질문입니다 [1]

강동주
2004/12/10 7070 1320
[1][2][3][4][5][6][7][8] 9 [10]..[42] [next]

Copyright 1999-2019 Zeroboard / skin by Zetyx