요일을 한글로 표시하기

글쓴이 : 페리스( http://anomarad.com )

setlocale(“LC_TIME”,”korean”);
echo strftime(“%A”);
?>

간단하죠?
자주 사용되지는 않는 것 같습니다만 이런게 있다는 정도만 아시면 되겠죠;;

아래는 각함수에 대한 PHP 레퍼런스 링크입니다.
http://kr.php.net/manual/kr/function.setlocale.php
http://kr.php.net/manual/kr/function.strftime.php

한글 중성유무 체크하기

아래의 초성에 힘을 입어.. 중성 구하기입니다..
유니코드값에서 16을 뺀 후 28로 나눈 나머지가 0이면 받침이 없는 한글이고 그 외에는 모두 받침이
있는 거라는군요. ( 자바팁란의 글에서.. )

유니코드 변환 소스는 최요섭님이 만들걸 사용했구요.. 초성구하는 것보다 더 사용할때가 많을것이라
생각이 드는군요.. (유니코드 변환 소스 받기)

require “mischoi.php3”; // 유니코드 변환소스 로드

function CheckFinalConsonant($str)
{
if ((intval(str2uni(substr($str,-2)))-16)%28!=0) return true;
else return false;
}

$var = “눈이오면”;

if (CheckFinalConsonant($var)) {
echo “{$var}을 입력하셨습니다.”;
}
else {
echo “{$var}를 입력하셨습니다.”;
}
?>

한글 초성 구하기

주소록같은 프로그램을 만들때 ㄱ,ㄴ,ㄷ,ㄹ.. 이렇게 소팅을 해야할때가 있습니다. 이럴때 간단하게
하기 위해서 만들어본 한글 자음 구하기 클래스입니다. -_-;; ㄱ은 1, ㄴ은 2.. 이런식으로 해서 DB에
저장해두고.. 거기에 인덱스 걸고 쿼리하는게 좀더 빠르고 편하겠져.. ^^

P.S >> 간단해서.. 설명이 없습니다.. -_-;; 원하시는 분들이 계시다면.. 달아드리겠습니다..
영문의 처리에 대한 부분은 원래소스에서 뺐습니다.. 왜냐~ 여러분들도 한번 해보시라고..
( 그래야 조금이나마 공부가 되죠 ^^ )
예전의 어떤분의 소스를 본 기억을 참조했는데.. 기억못해죄송합니다.. ㅠ.ㅠ

소스 ==========================================================================================

class SelectHanCategory
{
// 가..나..다..의 16진수값들
var $hexcode = array(“b0a1” => “ㄱ”, “b3aa” => “ㄴ”,”b4d9″ => “ㄷ”, “b6f3” => “ㄹ”,”b8b6″ => “ㅁ”,
“b9d9” => “ㅂ”,”bbe7″ => “ㅅ”, “bec6” => “ㅇ”,”c0da” => “ㅈ”, “c2f7” => “ㅊ”,
“c4ab” => “ㅋ”, “c5b8” => “ㅌ”, “c6c4” => “ㅍ”,”c7cf” => “ㅎ”, “c8ff” => “”);
var $hexarray, $hexcount;

function SelectHanCategory() {
$this->hexcount = count($this->hexcode);
for($i=0; $i < $this->hexcount ; $i++) {
$this->hexarray[] = key($this->hexcode);
next($this->hexcode);
}
}

function IsHangul($ch)
{
$ch = ord($ch);
if($ch >= 0xa1 && $ch <= 0xfe) return true;
return false;
}

function Check($str)
{
if($this->IsHangul(substr($str, 0, 1))) {
$current_hexcode = bin2hex(substr($str, 0, 2));
for ($i=0,$j=1;$i<$this->hexcount;$i++,$j++) {
if ($current_hexcode>=$this->hexarray[$i] && $current_hexcode<$this->hexarray[$j]) {
break;
}
}
return array($j,$this->hexcode[$this->hexarray[$i]]);
}
else return array(-1);
}
}
?>

사용법 ========================================================================================

$category = new SelectHanCategory();
$return = $category->Check(“음하하하.. 안녕하세요.”);
echo “해당 카테고리 : $return[1] , DB에 저장한 값 : $return[0]”;

프레임 새로고침할때 페이지 유지하기

/*
* 출 처 : PHP스쿨 (www.phpschool.com)
* 올린이 : Fencer
*/

제목 그대로 PHP로 생성한 프레임에서 새로고침할 때 페이지 유지하기입니다.

필요하신 분들 많았으리라 봅니다. ;;

전부터 PHP를 이용해 만든 프레임 페이지에서 브라우저의 refresh 버튼을 누를 때

현재 보고 있는 페이지가 아니라 src=”로 정해줬던 페이지가 뜨는 걸 보고

브라우저가 html 페이지와 php 페이지 간에 뭔가 차이를 느낀다고 생각해 왔는데..

뭐 전에는 별 필요성을 못 느꼈기 때문에 + 귀찮아서 그냥 두었다가

‘XXXX XX를 위한 것인데 대충 만들 수 없다’는 자세로 6^_^;;

Q&A나 Tip&Tech를 좀 찾아봤더니..

아무도 답변이 없었더군요. ㅡoㅡ;

—————————————————————————–
$LastModified = gmdate(“D d M Y H:i:s”, filemtime($HTTP_SERVER_VARS[SCRIPT_FILENAME]));
header(“Last-Modified: $LastModified GMT”);
header(“ETag: “$LastModified””);
—————————————————————————–

보시면 뭔지 금방 아시겠죠? ^_^

복사해다가 프레임 생성하는 파일의 맨 위에 넣으시면 됩니다.

다른 브라우저는 확인 안 해 봤고.. 익쑤뿔로러만.. 확인했습니다.

‘자동으로’, ‘페이지를 열 때마다’ 모두 잘 되는군요.

일반 html 문서와 비교해 볼 때 (일반적으로) PHP가 뿌려주는 내용은

html content 부분은 똑같지만, header의 Last-Modified 의 시각이 매번 달라집니다.

(사실 아예 없습니다. -_-;;; 원래 동적인 resource니까 당연하지요.)

따라서 PHP에서 header에 Cache-Control을 최대로 잡아줘도

새로 받아온 수정 시각을 바탕으로 frame 전체를 새로고침하는 것으로 보입니다.

그래서 PHP 역시 header에 파일의 실제 수정 시각을 넣어주도록 하였습니다.

ETag는 HTTP/1.1 문서에 있길래 넣어봤습니다.

The entity tag MAY be used for comparison with other entities from the same resource.

그럼~ 좋은 하루 되세요~ ^_^/”

모바일 브라우저 체크하기

/*
* 출처 : PHP스쿨 , www.phpschool.com
* 올린이 : True^ , true@mytrue.net , http://www.xminus.com
*/

다시 올립니다;; ^^;;;
모든 통신기종에서 테스트 해보지는 않았습니다.
하지만 될것입니다-_-; 칼라폰을 제외하고는;
mnuri(www.mnuri.co.kr)라는 모바일홈페이지 공간을 주는곳에 공개된 ASP소스를 변경한것입니다.

$agent=getenv(“HTTP_USER_AGENT”);
$subno=getenv(“HTTP_X_UP_SUBNO”);

if(eregi(“SKT”,$agent)) // 011 휴대폰인 경우 [WML]
Header(“Location:index.wml.php”);

elseif(eregi(“STI”,$agent)) // SK-신세기통신(017)의 휴대폰인 경우 [WML]
Header(“Location:index.wml.php”);

elseif(eregi(“CellPhone”,$agent)) // 016,018 휴대폰인 경우 [mHTML]
Header(“Location:index.mhtml.php”);

elseif(eregi(“itouch”,$subno)||eregi(“ezweb”,$subno)) // 017,019 휴대폰인 경우 [HDML]
Header(“Location:index.hdml.php”);

elseif(eregi(“UP.Browser/3.1”,$agent)) // hdml용 UP브라우저3.1 시뮬레이터인 경우 [HDML]
Header(“Location:index.hdml.php”);

elseif(eregi(“UP.Browser/3.2”,$agent)) // hdml용 UP브라우저3.2 시뮬레이터인 경우 [HDML]
Header(“Location:index.hdml.php”);

elseif(eregi(“UP.Browser/4.0”,$agent)) // UP브라우저4.0 시뮬레이터인 경우 [WML]
Header(“Location:index.wml.php”);

elseif(eregi(“UP.Browser/4.1”,$agent)) // UP브라우저4.1인 017/019 휴대폰인 경우 [WML]
Header(“Location:index.wml.php”);

elseif(eregi(“UP.Browser/4.1″,$agent)&&eregi($agent,”UPG”)) // WML용 UP브라우저4.1 시뮬레이터인 경우 [WML]
Header(“Location:index.wml.php”);

elseif(eregi(“Mozilla”,$agent)) // 일반브라우저인경우
Header(“Location:Browser.html”);
?>