javascript escape 인코딩 php로 디코딩 하기

PHP/팁앱테크 2013. 1. 13. 10:26

// script /======================================================

< script >

var title;

title =escape("ㅇㄹㄴ#$#%2ㅇ,ㄹㅇ남; ㄹㅇㄴㅁ");

< /script >


// php /=========================================================

< ?php

function js_unescape($s) {

    $s= preg_replace('/%u(....)/', '&#x$1;', $s);

    $s= preg_replace('/%(..)/', '&#x$1;', $s);

    return html_entity_decode($s, ENT_COMPAT, 'utf-8');

}


$title = js_unescape($_REQUEST['title']);

? >

php 문서 안에 HTML 문서 쉽게 넣기

PHP/팁앱테크 2012. 6. 8. 11:02

php 문서에 html과 함께 코딩하는 경우가 많은데
이럴때 활용하면 가독성도 좋고 코딩하기 편합니다.

즉 템플릿 개념과 비슷하다고 볼 수 있겠죠

$string = <<<HTML
        < H3 >{$title}< /H3>
        < div >{$contents}
        HTML 소스를 편하고 보기좋게 넣을 수 있다
아주 좋아
HTML;

PHP 제어 구문과 문법

PHP/팁앱테크 2012. 4. 3. 21:54

PHP의 다양한 제어 구문과 문법을 알아 보겠습니다.


1. IF 문

Noteelseif와 else if은 위 예제처럼 대괄호를 사용할 때 정확히 같은 구문으로 간주됩니다. if/elseif 조건을 콜론을 사용해서 정의할 때, else if 처럼 두 단어로 나눠서는 안됩니다. PHP는 처리 오류로 실패합니다.

/* 방법1 */
if($a > $b):
    echo $a." is greater than ".$b;
elseif ($a == $b) : // 단어가 붙어 있어야 함.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

/*방법2*/
$hour = 11;
echo $foo = ($hour < 12) ? "Good morning!" : "Good afternoon!";


2. if 안의 if문 일때

if($a):
    echo $a;
    if($b) {
      echo $b;
    }; // <- closing semicolon
else:
    echo $c;
endif;



3. while 문

/* example 1 */
$i = 1;
while ($i <= 10) {
    echo $i++;
}

/* example 2 */
$i = 1;
while ($i <= 10):
    echo $i;
    $i++;
endwhile;


4. for 문
/* 예제 1 */
for ($i = 1; $i <= 10; $i++) {
    echo $i;
}

/* 예제 2 */
for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
    echo $i;
}

/* 예제 3 */
$i = 1;
for (; ; ) {
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}

/* 예제 4 */
for ($i = 1, $j = 0; $i <= 10; $j += 1, print $i, $i++);


/* 예제 5 */
for ($i = 1; $i <= 10; $i++):
    echo $i;
endfor;

5. switch 문

/*예제 1*/
switch ($i) {
case 0:
    echo "i는 0과 같다";
    break;
case 1:
    echo "i는 1과 같다";
    break;
case 2:
    echo "i는 2와 같다";
    break;
default:
    echo "i는 0, 1, 2 어느것도 아니다";
}

/* 예제 2 */
switch ($i):
case 0:
    echo "i equals 0";
    break;
case 1:
    echo "i equals 1";
    break;
case 2:
    echo "i equals 2";
    break;
default:
    echo "i is not equal to 0, 1 or 2";
endswitch;


6. foreach 문

$arr = array("하나", "둘", "셋");

/*방법1*/
foreach ($arr as $key => $value) {
    echo "키: $key; 값: $value
\n"; } /*방법2*/ foreach ($arr as $key => $value) : echo "키: $key; 값: $value"; endforeach;





php5 autoload 활용하기

PHP/팁앱테크 2012. 4. 3. 13:39

PHP5 autoload 함수 활용하기


PHP5 부터는 __autoload 라는 특별한 함수를 지원한다.

기존의 클래스 파일을 사용하기 위해서는

include '/classes/db/DbMysqli.class.php';
$db =  new DbMysqli();

이와 같이 include 먼저 하고나서
클래스를 선언하여 사용해야 했다.
엄청 불편하다

자바처럼 그냥 new 로 생성해서 사용하면 편한데 말이다. ^^

그래서 나온것이 바로 요놈 __autoload 이다


이놈을 사용하게 되면
그냥 include 를 수동으로 코딩하지 않아도
__autoload 이놈이 알아서 include 해준다.
그러므로 이제부터는 그냥

$db = new  DbMysqli();

이렇게만 선언해서 사용하면 된다.

아래 소스는 __autoload 를 정의 해 놓은 것이다
소스는 이렇다

@ __autoload Source

# 절대 경로
define('_ROOT_PATH_', '/www/설치경로');

# 클래스 자동 인클루드
function __autoload($class_name)
{
        # 클래스명중 경로 추출
	$tmp_args = explode(' ', preg_replace( '/([a-z0-9])([A-Z])/', "$1 $2",$class_name));
	$class_path_name = sprintf("%s/{$class_name}",strtolower($tmp_args[0]));
	
	# 체크
         if(!class_exists($class_path_name,false))
	{
		# classes 폴더
		if(file_exists(_ROOT_PATH_.'/classes/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/classes/'.$class_path_name.'.class.php';
		}

		# modules 폴더
		else if(file_exists(_ROOT_PATH_.'/modules/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/modules/'.$class_path_name.'.class.php';
		}

		# 기타 만든 클래스 폴더 [첫대문자만 폴더로 지원]
		# ( /my/MyTest.class.php -> MyTest.class.php)
		else if(file_exists(_ROOT_PATH_.'/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/'.$class_path_name.'.class.php';
		}
	}
}


자 이젠 __autoload 함수 정의 해 놓은 것을 설명할 차례군요

먼저, 아래와 같은 폴더 구조에 클래스 파일들이 있다고 가정을 합니다.

|----------------------------------------------------------------
|       파일경로 및 클래스 파일명         |         클래스명               
|-----------------------------------+----------------------------
/classes/db/DbMysqli.class.php         // class DbMysqli{ }
/classes/req/ReqForms.class.php       // class  ReqForms { } 
/classes/tpl/TplFusion.class.php         // class  TplFusion {}

/modules/bbs/BbsModel.class.php        // class BbsModel{ }
/modules/mem/MemModel.class.php      // class MemModel{ }

/my/MyTest.class.php                           // class MyTest{ }


1. __autoload($class_name) 는 new 라는 명령만 떨어지면 자동으로 호출이 됩니다.

$db = new DbMysqli();


new -> __autoload 를 호출하고
$class_name -> DbMysqli 클래스 명이 되는거죠

2. 클래스명에서 클래스가 위치 하고 있는 경로를 추출합니다. 기준은 첫번째 대문자로 시작하고
다음 대문자가 나오기 전까지의 클래스명의 문자는 폴더를 가리킵니다.

DbMysqli    이건 폴더 db 를 가리키고
ReqForms   이건 폴더 req 를 가리키고
BbsModel   이건 폴더 bbs 를 가리키고
MemModel  이건 폴더 Mem 를 가리키고
MyTest       이건 폴더 my 를 가리킵니다.

위와 같은 기준으로 위치 (폴더) 를 알아냅니다.

# 클래스명중 경로 추출
$tmp_args = explode(' ', preg_replace( '/([a-z0-9])([A-Z])/', "$1 $2",$class_name));
$class_path_name = sprintf("%s/{$class_name}",strtolower($tmp_args[0]));


2. 이미지 인클루드된 클래스 파일이 있는지 확인 한 후 있으면 include 안하고
없으면 하게 될겁니다.

제가 코딩 해 놓은건
일단 무조건 

1. classes 폴더 밑에 클래스 이름 폴더를 찾고 없으면
2. modules 폴더 밑에 클래스 이름 폴더를 찾고 그리고 나서
3. 선언된 클래스의 이름 폴더를 찾도록 하였습니다.

전 이유가 있어서 그랬지만  1,2번을 삭제하고 바로 3번만 선언해서 사용하셔도 됩니다.

그 역할을 하는 소스 부분이 바로 이 부분

# 체크
 if(!class_exists($class_path_name,false))
{
		# 1. classes 폴더
		if(file_exists(_ROOT_PATH_.'/classes/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/classes/'.$class_path_name.'.class.php';
		}

		# 2. modules 폴더
		else if(file_exists(_ROOT_PATH_.'/modules/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/modules/'.$class_path_name.'.class.php';
		}

		# 3. 기타 만든 클래스 폴더 [첫대문자만 폴더로 지원]
		# ( /my/MyTest.class.php -> MyTest.class.php)
		else if(file_exists(_ROOT_PATH_.'/'.$class_path_name.'.class.php') !==false){
			include_once _ROOT_PATH_.'/'.$class_path_name.'.class.php';
		}
}


끝까지 읽어 주셔서 감사합니다.
이 방법 말고도 php.net 에 보시면 클래스도 지원합니다.

마음에 드는 방법으로 사용하세요


php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다

PHP/팁앱테크 2012. 3. 29. 11:43

php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다


PHP의 매력 ㅎㅎㅎ
뭐 말하려니 입이 아프네요 ㅎㅎㅎ

오늘은 배열 값 중에서 가장 큰 값을 찾는 것과
그 값이 가리키는 키값을 찾는 걸 해볼까 합니다.

알면 유용하니 잘 보아 두세요.


@ 다음과 같은 배열이 있습니다.

$tmp_v_args = 

// 결과
Array
(
    [0] => 0
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 0
    [8] => 0
    [9] => 0
    [10] => 0
    [11] => 0
    [12] => 0
    [13] => 0
    [14] => 0
    [15] => 0
    [16] => 0
    [17] => 0
    [18] => 0
    [19] => 58
    [20] => 33
    [21] => 58
    [22] => 57
    [23] => 9
    [24] => 16
    [25] => 102
    [26] => 115
    [27] => 138
    [28] => 22
    [29] => 0
    [30] => 0
)



@ 배열중 가장 큰 값을 추출 하겠습니다.

$max_int_v = max($tmp_v_args); #배열중 가장 큰 값 추출

// 결과
138



@ 추출한 값이 가리키는 배열의 키를 추출하겠습니다.

$max_int_v_key = array_search($max_int_v, $tmp_v_args); #값이 가리키는 키값 추출

// 결과
27



@ 위 코드를 한번에 작성하면 다음과 같이 되겠죠

$max_int_v = max($tmp_v_args); #배열중 가장 큰 값 추출
$max_int_v_key = array_search($max_int_v, $tmp_v_args); #값이 가리키는 키값 추출



끝까지 읽어 주셔서 감사합니다.