카테고리 없음
[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); \를 지워버림(복귀)
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을 출력
문자열 대체하기
$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()문은 처음에 실행되어 그 코드 블록이 실행되믄 안 되든 간에 파일 내에 호출된다.