본문 바로가기

카테고리 없음

[PHP]유용한 팁 및 함수

[PHP]유용한 팁 및 함수

strip_tags()

html과 php 태그를 떼어준다.

 
 

eval() 함수

eval("echo 'hello world';");

문자열을 PHP 코드처럼 실행
 
 
 
htmlspecialchars(stripslashes($row['title'])); 

코딩 문자를 처리해준다.
 
 
mysql_pconnect('','','');

디비에 대한 persistent 접속을 리턴

스크립트가 끝나도 여전히 접속되어 있으며 mysql_close()로 접속을 끊을 수 있다.

 
 
$price=doubleval($price);

숫자 필드이기 때문에 이상한 문자를 제거하귀 위함. 사용자가 폼에 입력할 수 있는 기호들을 처리.
 
 
echo mysql_affected_rows()."book inserted into database.";

리턴된 행이 얼마나 되는지 알아본다.
 
 
mysql_free_result($result);

함수에 결과 식별자를 넘겨줄 수 있다.
 
 
 
bool mysql_create_db('db', $connect);

bool mysql_drop_db('db', $connect);

디비 만들고 지우기
 
 
 
 
set_error_handler('function');

에러시 함수를 실행한다.
 
 
─────────────────────────────────────────────
 
opendir()

closedir()

readdir()

디텍토리 함수들
 
 

fopne()

fclose()

파일 함수들
 
 
 
disk_free_space()

남은 공간의 바이트 크기를 리턴
 
 

mkdir("/tmp/testing", 0777);

넘겨준 퍼미션만으로는 원하는 퍼미션을 얻을 수 없다.

$oldumask=umask(0);

mkdir("/tmp/testing", 0777);



umask($oldumask);
 
현제 umask를 검사하고 바꾼다. 윈도우즈 시스템에서는 umask()가 아무일도 하지 않는다.
 
rmdir("/tmp/testing");

디렉토리 지우기
 
 
─────────────────────────────────────────────
 
mysql_query($query) or die('Could not execute query');

데이터 접속 실패시 문장 리턴
 
 
─────────────────────────────────────────────
 
echo TIREPRICE;

변수는 $를 붙이지만 상수는 상수의 이름만 적어주면 된다.
 
 
password()

md5()

비밀번호를 사용하기 위한 유용한 함수
 
 
 
 
─────────────────────────────────────────────
 
한 변수값을 다른 변수에 대입하면 첫 번째 변수의 값을 복사하여 메모리 어딘가에 저장.
 
$a=5;

$b=$a;
 
이렇게 하면 $a의 값을 복사하여 $b에 저장하게 된다. 만약 $a의 값이 변경되어도 $b의 값에는 전혀

영향을 미치지 않는다.

 
$a=7; //$b는 여전히 5이다.
 
이때 & 연산자를 사용하면 좀 다른 결과를 가져온다.
 
$a=5;

$b=&$a;

$a=7; //$a와 $b 모두 7이다.
 
 
$a와 $b 모두 ture여야 ture를 리턴

비교연산자
 
== 등위

==== identical 이것은 피연산자의 값이 같은 형을 갈 때에만 ture를 리턴한다.

!= 같지 않다

<> 같지 않다

 
 
논리연산자

!        NOT      !$b             $b가 false이면 frue를 리턴

&&    AND       $a && $b    $a와 $b 모두 ture여야 ture를 리턴

||     OR         $a || $b     $a와 $b 하나라도 ture이면 ture를 리턴

and                                 &&와 동일

or                                    ||와 동일

 
 
비트연산자

&      비트단위AND

|      비트단위 OR

~     비트단위 NOT

^      비트단위 XOR

<<   왼쪽시프트

>>   오른쪽 시프트

 
 
 
삼항 연산자
 
($grade>50 ? 'Passed':'Failed');
 
 
에러 억제 연산자
 
 
 
 
─────────────────────────────────────────────
변수 상태 검사
 
void unset(mixed var);

어떤 변수를 삭제하고 싶다면 unset()이라는 함수를 사용하면 된다.
 
 
boolean empty(mixed var);

변수가 존재하고, 비어 있지 않으며, 0이 아닌 값을 가지고 있다면 ture를 리턴하고, 아니면 faluse를 리턴
 
boolean isset(mixed var);

변수의 이름을 인자로 받아서 만약 변수가 존재한다면 ture를, 아니면 false를 리턴
 
 
 
elseif 문
 
if($a<10)

  $discount=0;

elseif($a>=10 && $a<=49)

  $discount=5;

elseif($a>=50 && $a<=99)

  $discount=10;

elseif($a>=100)

  $discount=15; 

 
연속된 if 문 중에서 하나만 실행된다는 데 주의하자. 위의 예지는 어떤 상황에서도

한 조건만이 ture가 되기 때문에 상관없지만, 만약 조건문 두 개가 동시에 ture가

될 수 있다면 그 중에서 먼저 검사되는 조건문의 코드만이 실행.

 
 
 
─────────────────────────────────────────────
 
$fp=("$document_root\\..\\orders\\orders.txt",'w');

\를 사용하려면 특수문자로 인식할 수 있도록 \를 추가해야 한다.

 
while(!feof($fp))

파일의 끝인지 검사하기 위해서 feof()함수를 사용한다.

 
 
unlink("$document_root/../orders/orders.txt");

파일을 지우고 싶을 때 사용한다.
 
 
$numbers=range(1,10);

배열을 만들어준다. 1에서 10까지의 값을 가지는 배열을 만들어준다.
 
 
 
$daios[0]='1';

$daios[1]='2';

$daios[2]='3';

배열을 만들어준다.
 
 
 
 
foreach($daios as $current)

echo $current.' ';

 $current 변수에 차례대로 저장하여 화면에 출력한다.
 
 
 
연관배열

$prices=array('first'=>100, 'second'=>10, 'third'=>4);

사용

$prices['first']

또다른방법

$prices=array('first'=>100);

연관 배열 루프 접근

foreach($prices as $key=>$value)

 echo $key.'=>'.$value.'<br />';

 
 
reset($prices);

while(list($product, $price)=each($prices))

 echo "$product-$price<br />";

 
list()함수는 array 를 표현하기 위한 함수라고 말하고 싶네요.

each()함수는 한번에 하나의 값을 출력하기 위함.
 
 
 

다차원 배열

$products=array(array('first','second',100), array('first','second',500), array('first','second',200));
 
 
 
$prices=array('1','2','3');

sort($products);

배열을 알바벳이나 숫자 순으로 정렬한다.

 
 
 
explode("\t", $daios[$i])

문자열을 \t 기준으로 나누어진다.

 
 
$name=trim($name);

공백을 지워준다.
 
 
 
ltrim()

chop()

왼쪽 오른쪽 공백 제거
 
 
<? echo nl2br($mailcontent); ?>

문자열 중에서 모든 줄바꿈 문자를 xhtml에서의 줄바꾸이인 <br>태그로 바꿔준다.
 
 
─────────────────────────────────────────────
변환명세

%b   정수로 해석되며 이진수로 출력한다.

%c   정수로 해석되며 캐릭터로 출력

%d   정수로 해석되며 십진법의 숫자로 출력

%f   double로 해석되며 부동 소수를 출력

%o   정수로 해석되며 8진수를 출력

%s   문자열로 해석되며 문자열을 출력한다.

%x   정수로 해석되며 소문자 알파벳 a-f를 포함한 16진수를 출력

%X   정수로 해석되며 소문자 알파벳 A-F를 포함한 16진수를 출력

 
 
 
대소문자 바꾸기

strtoupper()  모든알바벳을 대문자로

strtolower()  모든 알파벳을 소문자로

ucfirst()   문장 처음만 알파벳

ucwords()  각 단어의 첫 알파벳을 대문자로

 
 
 
AddSlashes($daios); \를 삽입

StripSlashes($daios); \를 지워버림(복귀)

 
 
explode('@', $daios);   @을 기준으로 나눈다

implode('@', $daios);   @을 기준으로 합친다.

join() 위와 동일

strtok($daios, ' ');  공백을 기준으로 쪼개진다.

 
 
 
substr($daios, 0, 4); 처음부터 4자리까지 리턴

substr($daios,  -9); 뒤에서부터 9자리까지 리턴  

substr($daios, 4, -13); 

앞에서 4번째부터 뒤에서 13번째까지 리턴

 
 
 
 
문자열비교

strcmp($a, $b);   비교하여 같다면 0을 리턴, 크다며ㅑㄴ 0보다 큰 양수 값 리턴

a가 b보다 작다면 0보다 작은 값 리턴

 
strcasecmp() 위와 동일

strnatcmp() 대소문자 구별하지 않지만 위와 동일

 
 
strlen('dddd');  문자열의 길이 4를 리턴한다.

 
 
if(strlen($mail) < 6)

{

echo '이멜을 다시 입력하라';

exit; 

}

 
 
strstr($daios, 'shop');

strchr()

strrchr()

stristr()


문자열 안에서 문자열 찾아내기
 
 

if(strstr($feedback, 'shop'))


 
else if(strstr($feedback, 'shop2'))


 
else if(strstr($feedback, 'shop3'))


 
 
 
문자열의 위치 찾기
strpos()
strrpos()
 
$test='hellow world';
echo strpos($test, 'o', 5);
5부터 검색 시작하므로 브라우저에 7을 출력
 
 
문자열 대체하기
$feedback=str_replace($offcolor, '%!@', $feedback);
$test=substr_replace($test, 'x', -1);
마지막 글자를 x로 바꾼다.
 
 
 
 
─────────────────────────────────────────────
정규표현식의 기초
 
[a-z]

a-z까지만 제한

 
[aeiou]

모든모음

 
[a-zA-z]

모든 대소문자 알파벳

 
[^a-z]

알파벳 소문자가 아닌것들

 
 
POSIX 스타일의 정규 표현식 문자 클래스
 
[[:alnum:]]    알파벳 문자, 숫자

[[:alpha:]]    알파벳 문자

[[:lower:]]    소문자

[[:upper:]]    대문자

[[:digit:]]      십진법 숫자

[[:xdigit:]]    16진법

[[:punct:]]    구두점

[[:space:]]   공백문자

[[:cntrl:]]      컨트롤 문자

[[:print:]]      모든 출력 가능한 문자

[[:graph:]]    스페이스 제외한 모든 문자

 
 
 
^는 정규 표현식의 시작부분에서 사용되면서, 검색하는 문자열의 맨 앞부분에 이 표현이 있어야 함을 의미

$는 정규 표현식의 뒷부분에 사용되고 이 표현으로 문자열이 끝나야 함을 뜻함.

 
^bob   밥으로 시작하는 문자열들과 일치

 
com$   컴으로 끝나는 문자열들과 일치 
 

^[a-z]$   이것은 a에서 z까지의 모든 글자와 일치한다.

 
 
 
선택하기

(com)|(edu)|(net)

com이나 due 또는 net과 일치하는 문자열을 표현하고 싶을때

 
 
정규 표현식으로 문자열 찾기

if(!eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $email))

{

 echo '이멜 형식이 틀렸다' ;

}

 
 
─────────────────────────────────────────────
auto_prepend_file="c:/intpub/header.inc"

auto_append_file="c:/intpub/foot.inc"

 
php.ini 파일에 설정 옵션중 위를 사용하면 모든 웹 페이지에 두 개의 파일 덧붙여진다.

 
 
include()문은 실행될 때에만 처리되고 만약 실행되지 않는다면 처리되지 않는다.

require()문은 처음에 실행되어 그 코드 블록이 실행되믄 안 되든 간에 파일 내에 호출된다.