<? 

//기본 날짜 세팅 - 이 부분을 날짜를 바꿔가면서 테스트 하시면 됩니다. 


echo "현재 년 (4자리): " . date("Y") . "<br />\n";

echo "현재 년 (2자리): " . date("y") . "<br />\n";


echo "\n<br /><br />\n\n"; // 줄바꿈


echo "현재 월: " . date("n") . "<br />\n";

echo "현재 월 (2자리): " . date("m") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "현재 일: " . date("j") . "<br />\n";

echo "현재 일 (2자리): " . date("d") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "현재 시 (24시간제): " . date("G") . "<br />\n";

echo "현재 시 (24시간제) (2자리): " . date("H") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "현재 시 (12시간제): " . date("g") . "<br />\n";

echo "현재 시 (12시간제) (2자리): " . date("h") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "현재 분 (2자리): " . date("i") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "현재 초 (2자리): " . date("s") . "<br />\n";


echo "\n<br /><br />\n\n";


echo "오전/오후 (대문자): " . date("A") . "<br />\n";

echo "오전/오후 (소문자): " . date("a") . "<br />\n";



echo "\n<br /><br />\n\n";


echo "오늘 요일 번호 (일요일=0): " . date("w") . "<br />\n";




$year = date("Y"); 

$month = date("m"); 

$day = date("d"); 


$nowday = mktime(0,0,0,$month, $day, $year); 

//오늘 

$today = date("Y.m.d", $nowday); 

//일주일전 

$prev_week = date("Y.m.d", mktime(0,0,0,$month, $day-7, $year)); 

//일주일후 

$next_week = date("Y.m.d", mktime(0,0,0,$month, $day+7, $year)); 

//이번달 마지막 날짜? 

$last_day = date("t",$nowday); 

//이번달은 몇 주? 

//$month_week1 = date('t', mktime()); 

$month_week = date("t", mktime()); 

$month_week = $month_week / 7; 

//$month_week1 = ceil($month_week1 /7); 

$month_week = ceil($month_week); 

//현재 요일 

$now_week_day = date("w", mktime(0,0,0, $month, $day, $year)); 

$w_d[0] = "일요일"; 

$w_d[1] = "월요일"; 

$w_d[2] = "화요일"; 

$w_d[3] = "수요일"; 

$w_d[4] = "목요일"; 

$w_d[5] = "금요일"; 

$w_d[6] = "토요일"; 


//마지막 날의 요일을 구한다. 

$end_week_day = date("w", mktime(0,0,0, $month, $last_day, $year)); 


if($day >= 1 && $day <= $now_week_day+1){//현재주가 시작 주이면 

$start_day = date("Y.m.d", mktime(0,0,0, $month, 1, $year)); 

$end_day = date("Y.m.d", mktime(0,0,0,$month, $day + (6-$now_week_day), $year)); 

}elseif($day >= ($last_day - ($end_week_day+1)) && $day <= $last_day){//현재주가 마지막 주이면 

$start_day = date("Y.m.d", mktime(0,0,0, $month, ($day - $now_week_day), $year)); 

$end_day = date("Y.m.d", mktime(0,0,0,$month, $last_day, $year)); 

}else{ 

$start_day = date("Y.m.d", mktime(0,0,0, $month,  $day - $now_week_day, $year)); 

$end_day = date("Y.m.d", mktime(0,0,0,$month, $day + (6-$now_week_day), $year)); 



echo " 

오늘  : $today <br> 

일주일전 : $prev_week <br> 

일주일후 : $next_week <br> 

이번달 마지막 날짜? : $last_day <br> 

이번달은 몇 주? : $month_week <br> 

현재 요일? : $w_d[$now_week_day] <br> 

이번주 시작일 날짜? : $start_day <br> 

이번주 마지막 날짜? : $end_day <br> 

"; 

?> 

Posted by 예배하는 프로그래머
  

 It is not safe to rely on the system's timezone settings. 

잘 사용하던 PHP에 끔금없이 이러한 에러 메세지가 나왔다. 
PHP 의 mktime() 메소드를 사용하려 할때 그런것이다. 
알고보니 PHP.ini에 date 시간 설정이 안되어 있던터라 생기는 문제였다. 

1. php.ini의 파일의 존재를 알기 위해기 아무 php 파일에서 경로를 찾는다. 
<?phpinfo()?>

2. php.ini 을 vi로 열어 아래와 같이 수정한다. 
기존의 문제 부분.

[Date]
; Defines the default timezone used by the date functions
;http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
; date.timezone =

수정 후.

[Date]
; Defines the default timezone used by the date functions
;http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = Asia/Seoul

지역에 따라 Asia/Tokyo, America/Chicago, Europe/Andorra 등의 별도 설정이 가능하다.

3. 서버 재시동한다. 
service httpd restart 

Posted by 예배하는 프로그래머
  

vi /etc/php.ini 환경설정

찾아서 아래와 같이 수정한다. 


error_reporting = E_ALL & ~E_NOTICE

display_errors = on

log_errors = off

html_errors = on






track_errors = on


위와 같이 마친후엔 반드시 서버 재시동

service httpd restart


Posted by 예배하는 프로그래머
  

특수문자를 치환하거나 제거할 때 쓰는 preg_replace.
<정규 표현식 패턴, 치환할 내용, 대상 문자열>

$string preg_replace("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", "",$string);


모든 특수문자는 사라진다. 한자 한자 하고 싶을땐

$newstr = str_replace("}","",htmlspecialchars($newstr));

Posted by 예배하는 프로그래머
  

<?php
if( isset($_COOKIE['orientation']) ){
    $rotation = $_COOKIE['orientation'];
    if( $rotation == 0 ){
        echo '<h1>Is Portrait</h1>';
    }else{
        echo '<h1>Is Landscape</h1>';
    }
 }else{
?>
    <script type="text/javascript" language="javascript">
        function writeCookie(){
            the_cookie = document.cookie;
            var orientation = 0;
            if( window.orientation ){
                orientation = window.orientation;
            }
            the_cookie = 'orientation='+window.orientation+';'+the_cookie;
            document.cookie = the_cookie;
            document.location = '<?=$_SERVER['PHP_SELF']?>';
        }
        document.body.addEventListener('orientationchange', writeCookie );
        writeCookie();
    </script>
<?php
    }
?>



Posted by 예배하는 프로그래머
  



코드이그나이터
http://www.codeigniter-kr.org/

블로그 30분만에 만들기 동영상
http://www.codeigniter-kr.org/movie/blog27min/blog27min.html

Posted by 예배하는 프로그래머
  



<head> 부분에.... 

<script type="text/javascript">
 
var t_username = 'OnnuriPoint5'; // username 대신 여러분의 아이디를 넣으세요
var t_count = 1; // 한번에 나타낼 갯수를 적어 넣으세요
 
function throwHTML (obj){
 var statusHTML = [];
 for (var i=0; i<obj.length; i++){
var username = obj[i].from_user;
var status = obj[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
 return '<a href="'+url+'" target="_blank">'+url+'</a>';
}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
 return  reply.charAt(0)+'<a href="http://twitter.com/ '+reply.substring(1)+'" target="_blank">'+reply.substring(1)+'</a>';
}).replace(/\B#([_a-z0-9]+)/ig, function(reply) {
 return  reply.charAt(0)+'<a href="http://twitter.com/search?q=%23 '+reply.substring(1)+'" target="_blank">'+reply.substring(1)+'</a>';
});
statusHTML.push('<li><span>'+status+'</span> <a class="twt_time" href="http://twitter.com/ '+t_username+'/statuses/'+obj[i].id_str+'" target="_blank">'+relative_time(obj[i].created_at)+'</a> <span class="twt_slash">/</span> <a class="twt_reply"  href="http://twitter.com/?status=@ '+t_username+'%20&in_reply_to_status_id='+obj[i].id_str+'&in_reply_to='+t_username+'" target="_blank">reply</a></li>');
 }
 return statusHTML.join('');
}
 
function twitterCallback(twitters) {
 document.getElementById('twitter_update_list').innerHTML = throwHTML (twitters);
}
 
function relative_time(time_value) {
 var values = time_value.split(" ");
 time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
 var parsed_date = Date.parse(time_value);
 var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
 var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
 delta = delta + (relative_to.getTimezoneOffset() * 60);   if (delta < 60) {
return 'less than a minute ago';
 } else if(delta < 120) {
return 'about a minute ago';
 } else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
 } else if(delta < (120*60)) {
return 'about an hour ago';
 } else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
 } else if(delta < (48*60*60)) {
return 'yesterday';
 } else {
return (parseInt(delta / 86400)).toString() + ' days ago';
 }
 
function getRecentTweets(){
 var script = document.createElement('script');
 var head = document.getElementsByTagName('head')[0];
 script.type = 'text/javascript';
 script.src = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name='+t_username+'&include_rts=true&count='+t_count+'&callback=twitterCallback';
 head.insertBefore(script, head.firstChild);
 
if (window.addEventListener) {
 window.addEventListener("load", getRecentTweets, false);
} else if (window.attachEvent) {
 window.attachEvent("onload",getRecentTweets);
} else {
 window.onload=getRecentTweets;
}
 
</script>
 

<td> 
<div id="twitter_update_list" class=conts></div>
</td> 
Posted by 예배하는 프로그래머
  

preg_replace() 는 Perl 방식의 빠른 정규 표현식 변환으로 PHP4 에서 사용할 수 있는 함수 입니다.

ereg_replace 함수 보다 몇배는 빠른듯 합니다.



그렇다고 ereg_replace  함수를 무시 해도 되나용? 절대 안됩니다 !!!

방식은 ereg_replace() 를 알아야 합니다.

정규 표현식을 알아야 가능 합니다. 요기 게시판에서 정규 로 검색 하시고 다쉬 공부하세요 !!!



Usage: mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])

subject 문자열에서 pattern을 replacement 로 변경 시킨다.



조건:

모든 파라미터 는 배열이어야 한다.

pattern 의 배열 수와 replacement 배열 수는 같아야 한다!







모든 것은 배열 이어야 합니다. 아래 2번째 예제를 보시면 , array 를 사용하여 만든 것을 보실 수 있습니다.



(fuck) 를 왜 이렇게 사용하냐구요? 그럼 정규 표현식을 다쉬 공부 하세용 ^^

왜 *fuck* 나 &fuck& 나 이런식으로 사용하지 않냐구요? 정규 로 검색 하시고 공부 하세용 !!!





아래의 소스를 사용해서 욕설필터링 함수나 클래스를 만들 수 있습니다.

만들어 보세용 ^^



i 나 si 나 e 옵션은 정확히 어케 사용하는지 모르겠슴당.

알면 다쉬 올리죵 ^^







<?php

$intext="fuck u damn 나쁜 새끼 damn 훔 지 랄 정말 씨 발 ";

$patterns = array ("/(fuck|damn|씨 발|세끼|새끼|지 랄|염병|미친|죽은|죽습니다|죽었습니다)/");
$replace = array ("**");
$intext=preg_replace ($patterns, $replace, $intext);
echo
$intext."<P>";

$intext2="fuck u damn 나쁜 새끼 damn 훔 지 랄 정말 씨 발 ";

$patterns2 = array ( // 패턴 11개 ★
                    
"(fuck)",
                    
"(damn)",
                    
"(씨 발)",
                    
"(세끼)",
                    
"(새끼)",
                    
"(지 랄)",
                    
"(염병)",
                    
"(미친)",
                    
"(죽은)",
                    
"(죽습니다)",
                    
"(죽었습니다)"
                    
);
$replace2 = array ( // 변경하는 것도 11개 ★
                    
"**",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*",
                    
"*"
                    
);
$intext2=preg_replace ($patterns2, $replace2, $intext2);
echo
$intext2."<P>";

// 출력은 ** u * 나쁜 * * 훔 * 정말 *

?>




<?php

//공백 제거

$in="tood  net";

$out=preg_replace("/\s+/","",$in);

echo
$out // toodnet

?>





<?php

// 전화 번호 구분 하기  물론 if 문이 들어 가던가..해야죠..3자리 일 경우..

$phone = "03238939383";



$phone = preg_replace("/([0-9]{3,3})([0-9]{3,4})([0-9]+)/", "($1) $2-$3",$phone);



echo
$phone; // (032) 3893-9383



//그외 체크 숫자 $phonenumber =  preg_replace('/[^0-9]/','',$phonenumber);



?>





<?php

$text
="공백 제거 ? 체크       ㅋㅋㅋ 되나 ?";

$splittext = new Array();

while (
$text){

    
preg_match("/[^\s]+",$text);

    if (
$machtes[1]){$splittext[]=$matches[1];}

    
preg_replace("/$matches[1]/","",$text);



    
preg_match("/[\s]+",$text);

    if (
$machtes[1]){$splittext[]=$matches[1];}

    
preg_replace("/$matches[1]/","",$text);

}

?>



<?php

// nl2br() 대용 !!

preg_replace("/\n/", "<BR>\n", $var);

?>



<?php

// (.*) 의 의미는 안의 내용 모두 !

// \1 은 () 안의 내용 처음 것 !

$str="go go go";

$str=preg_replace( "/go(.*)/", "don't go \\1", $str );   

echo
$str; // don't go go go

?>





<?php

// 영문 알파벳을 제외한 모든 문자 지우기 - 한글, 숫자 , 특수 문자 지우기

$old="sdlsddskASSDDS12344sddssddsㄴ잉ㄴㅇ닌이";

$new = preg_replace('/[^a-zA-Z]/','',$old);

echo
$new

?>



<?php

// 영문 알파벳을 제외한 모든 문자 지우기 - 한글, 숫자 , 특수 문자 지우기

$old="이벤트";

$new = preg_replace('/[^a-zA-Z]/','',$old);

echo
$new."<P>";



print
strlen($new);



?>





<?php

// 작은 따옴표 주의 - SQL 입력 시... 물론 메직 쿼터를 사용하면 됨다.

function db_quote($value) {

   return
"'". preg_replace("/'/", "''", $value) ."'"

}

?>





<?php

//$number="40.60";

//$number="40.0";

//$number="40.360";

$number="40.020";

$number=preg_replace("/0+$/","",$number);



echo
$number;



?>



Umr&uuml;che \r\n zu <br />:



$string=preg_replace('/\r\n|\r|\n/', '<br />', $string);



Und anders rum:

$string=preg_replace("=<br(>|([\s/][^>]*)> )\r?\n?=i", "\r\n", $string);





tab 키는 \t 입니다.

<?php

$tree
="kaka    jjj ooo";

$tree=preg_replace("/\t/", "", $tree);

print
$tree;

?>



배열로 만들어 줍니다. preg_split()

<?php

$keywords
= preg_split ("/[\s,]+/", "hypertext language, programming");

print_r($keywords);

// Array ( [0] => hypertext [1] => language [2] => programming )

?>





E-mail Validations (email.php)



<?php

  
if ($submit) {

    
$okay = preg_match(

      
'/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{2,4}$/',

      
$emailfield

    
);

    if (
$okay) {

      echo
"E-mail is validated";

    } else {

      echo
"E-mail is incorrect";

    }

  }else {

?>

<form method="POST" action="email.php">

E-mail address: <input type="text" name="emailfield">

<br><input type="submit" name="submit" value="Validate">

</form>

<?php 

}  

?>



---------------------

<?php

/*********************************\

verifyEmail($email)



Takes the email address as arg1

and returns true on false if it

is valid or not.



\*********************************/

function verifyEmail($email) {

    if(!
preg_match("/^(.+)@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$/si", $email)) {

        return
false;

    } else {

        return
true;

    }

}

?>

---------------------



http://www.zend.com/zend/tut/tutorial-delin2.php



-----------------------------------------------------------------------



텍스트 내용 중에 링크 자동으로 설정 하기

<?php



if ($row = mysql_fetch_array($result))



{
# add <br> tags to line breaks in the first entry returned by the query above

$text = nl2br($row["text"]);



# convert email addresses to mailto links

$text2 = preg_replace("/([\w\.-]+)(@)([\w\.-]+)/e", "'<a href=\"mailto:\\0\">\\0</a>'", $text);



# convert http urls to hyperlinks

$text3 = preg_replace("/( http:\/\/)([\w\.-]+)/e", "'<a href=\"\\0\" target=\"_blank\">\\0</a>'",

$text2);



# convert www urls to hyperlinks

$text4 = preg_replace("/( www.)([\w\.-]+)/e", "'<a href=\"http://\\0\" target=\"_blank\">\\0</a>'",

$text3);





# print final result

print $text4;}



?>





============================================================



<?



// example data to test (hope it works...)





$data = 'Sonia,



Thank you for inquiring about the eNom Technology Partner (Reseller)

program.

www.tood.net



eNom has many services that are included in our domain services rate, such

as our automated registration www.happy.com that you can customize. Domain

Servers are available, along with URL redirect, registering name servers,

changing name servers and Email Fataqui@ya-right.net forwarding are provided

There are no hidden costs.  Technical Support is available by email or

telephone 6:00 am - 6:00 pm (Pacific Time) Monday through Friday to provide

troubleshooting and domain maintenance without a fee.



Director, Business Development

eNom, Inc.

2002 156th Ave NE #300

Bellevue, WA 98007

  www.me.com/hi.php?mn=0980

Phone (425) 883-8860 ext. 226

FAX    (425) 952-0794



xxx@xxx.com



http://www.eNom.com

"An ICANN Accredited Registrar"

'
;



function
make_links($str)

{



$search = array("!(\s)((f|ht)tps?:\/\/[a-z0-9~#%@\&:=?+\/\.,_-]+[a-z0-9~#%@\&=?+\/_.;-]+)!i",

"!(\s)(www\.[a-z0-9~#%@\&:=?+\/\.,_-]+[a-z0-9~#%@\&=?+\/_.;-]+)!i",

"!(\s)([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})!i",

"!^((f|ht)tps?:\/\/[a-z0-9~#%@\&:=?+\/\.,_-]+[a-z0-9~#%@\&=?+\/_.;-]+)!i",

"!^(www\.[a-z0-9~#%@\&:=?+\/\.,_-]+[a-z0-9~#%@\&=?+\/_.;-]+)!i",

"!^([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})!i");



$replace = array("\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",

"\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>",

"\\1<a href=\"mailto:\\2\">\\2</a>",

"<a href=\"\\1\" target=\"_blank\">\\1</a>",

"<a href=\"http://\\1\" target=\"_blank\">\\1</a>",

"<a href=\"mailto:\\1\">\\1</a>");



return
nl2br(preg_replace($search, $replace, $str));



}



//Usage: pass the $data string to process



echo make_links($data);



?>
Posted by 예배하는 프로그래머
  
공백제거
preg_replace("/\s+/","",$array_V_MMSCONTENTS[$i]);

유니코드로 변환하기 로 하면 공백이 유니코드로 변환되어진다.
몇날 몇일을 이것때문에  정말 이것때문에 고생 많이 했다. 

Description

string urlencode ( string $str )

This function is convenient when encoding a string to be used in a query part of a URL, as a convenient way to pass variables to the next page.
 


왜 이와 같이 필요하냐면 post는 괜찮지만 get 으로 값을 주고 받을때
예를 들어 http:// .....
xxx.php?temp=과자&content=맛있는과자&음료 정말일까?
이렇게 보내면  맛있는과자&음료 정말일까? 에 & 과 ? 그리고 공백 이것은 get값에 치명적으로 오류를 남길수 있다.
파라메타 값으로 인식하기 때문이다.  urlencode($array_V_MMSTITLE[$i]);  이렇게 유니코드로 감싸게 된다면.
아무 이상없이 값을 전송과 받을수 있게 된다.  이젠 절대 안 까먹을거 같다..
 
Posted by 예배하는 프로그래머
  
usr/local/apache2/conf/php.ini

php의 셋팅을 할수 있는데 아래의 함수는
register_globals = On

기전의 파라메터 값을 기억하겠는지에 대한 유무 값이다.
쉽게 말하자면. 
 if(!$Mnm1) $Mnm1 = $_GET[mmstitle];
없이도   mmstitle 을 받을수 있다는것인데.
사실 On값으로 주어도 Get 값 또는 Post 으로 꼬박꼬박 값을 받아주는것이 좋다.
이것때문에 엄청 해맸다. 그냥  
Posted by 예배하는 프로그래머