웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 문자열 (String) (1/4) 문자열저장 $str = PHP 문자열 ; 문자열출력 $str = PHP 문자열 ; print $str. <br> ; 문자열의특정부분출력 (string_ele.php) <? $str = "PHP 웹프로그래밍 "; print "str[4].str[5]: ". $str[4].$str[5]. "<br>"; Page 2 1
문자열 (String) (2/4) strtoupper() string strtoupper (string str) 문자열 str 을대문자로변환한뒤, 변환된문자열을리턴 strtolower() string strtolower (string str) 문자열 str 을소문자로변환한뒤, 변환된문자열을리턴 Page 3 문자열 (String) (3/4) ucfirst() string ucfirst (string str) 문자열 str 의첫번째문자를대문자로변환한뒤변환된문자열을리턴 ucwords() string ucwords (string str) 문자열 str에서각각의단어마다첫번째문자를대문자로변환한뒤문자열을리턴 Page 4 2
문자열 (String) (4/4) 문자열함수사용예 (to_func.php) $str = Apple Orange pear ; $str1 = strtoupper ($str); print $str1. <br> ; $str2 = strtolower ($str); print $str2. <br> ; $str3 = ucfirst ($str); print $str3. <br> ; $str4 = ucwords ($str); print $str4. <br> ; Page 5 URL 다루기 (1/3) URL (Uniform Resource Locator) WWW 에서원하는 ( 접근하고자하는 ) 정보의위치를나타냄 parse_url() array parse_url (string url) 문자열 url에저장된값을배열에 scheme, host, path, query 형식으로리턴 예 : $url = http://cs.kangwon.ac.kr/testurl.html?name=kim&age=28 scheme => http host => cs.kangwon.ac.kr path => /testurl.html query => name=kim&age=28 Page 6 3
URL 다루기 (2/3) var_dump() void var_dump (mixed expression [, mixed expression [,...]]) 파라미터로는어떠한형식 (mixed) 의 expression 도사용할수있음 여러개의변수의정보를알고자하는경우에도사용할수있음 parse_str() void parse_str (string str) 변수 str 에저장된문자열을변수와값의형태로변환 Page 7 URL 다루기 (3/3) URL 스트링예제 (url_str.php) <? $str1 = "http://cs.kangwon.ac.kr/testurl.html?name=kim&age=28"; $str2 = parse_url ($str1); var_dump ($str2); print "<p>"; parse_str ($str2[query]); print " 이름 : ".$name.", 나이 : ".$age."<br>"; Page 8 4
역순의문자열 strrev() string strrev (string str) 주어진문자열 str 의순서를반대로바꾸고그바뀐문자열을리턴 예제 (strrev.php) $str = ABCDEFGHIJKLMNOPQRSTUVWXYZ ; $str1 = strrev ($str); print $str1. <br> ; Page 9 문자열나누기 (1/2) substr() string substr (string str, int start [, int length]) 문자열 str 의 start+1 번째문자부터 length 만큼의문자열을선택하고그선택된부분문자열을리턴 두개또는세개의파라미터를가질수있음 예를들어, - substr ($str, 4) 를호출하면문자열 $str의 5번째문자부터문자열의끝문자까지의부분문자열을리턴 - substr ( 1234567890, -5, 3) 를호출하면 678 이리턴 Page 10 5
문자열나누기 (2/2) 문자열나누기예제 (substr.php) $str = 1234567890 abcdefghijklmnopqrstuvwxyz ; $str1 = substr ($str, 2, 5); print $str1. <br> ; $str2 = substr ($str, 8, 5); print $str2. <br> ; $str3 = substr ($str, 12, 8); print $str3. <br> ; $str4 = substr ($str, -9, 8); print $str4. <br> ; Page 11 문자열공백지우기 (1/2) rtrim() (equivalent to chop()) string rtrim (string str) 문자열 str 의오른쪽에있는빈공간을삭제한후그삭제된문자열을리턴 빈공간에속하는문자문자 \t \n \r \0 \x0b ASCII 값 32 9 13 10 0 11 CHAR Space Tab (HT) Newline Return NULL VT ltrim() : 왼쪽에있는빈공간을삭제 trim() : 문자열의왼쪽과오른쪽에있는빈공간을삭제 Page 12 6
문자열공백지우기 (2/2) 공백문자지우기예제 (trims.php) $str0 = Apple Banana Pear ; $str1 = chop ($str0); print start-. $str1. -end<br>\n ; $str2 = rtrim ($str0); print start-. $str2. -end<br>\n ; $str3 = ltrim ($str0); print start-. $str3. -end<br>\n ; $str4 = trim ($str0); print start-. $str4. -end<br>\n ; Page 13 기타문자열함수 nl2br(string str): 문자열의줄바꿈문자 (\n) 을 <br> 태그로변경 array explode(string separator, string input[, int limit]) 문자열 input 을분리자 (separator) 에따라분리하여, 분리된문자열을배열로반환 (limit 은배열의원소개수를제한 ) implode(), join(): 문자열배열을하나의문자열로합침 int strcmp(string str1, string str2): 두문자열을비교하여, 같으면 0 을, 다르면양수 (str1 > str2) 혹은음수 (str1 < str2) 를리턴 strcasecmp(): strcmp() 와같으나대소문자를구별치않음 strlen(): 문자열의길이를리턴 ( 예 : strlen( hello ) 는 5 를리턴 ) 기타문자열함수 문자열내에서문자열찾기 : strstr(), strchr(), strrchr(), stristr() 문자열의위치찾아내기 : strpos(), strrpos() 문자열대체하기 : str_replace(), substr_repalce() Page 14 7
날짜변환 (1/4) getdate() array getdate ([int timestamp]) 현재시각혹은 timestamp에해당하는날짜와시간으로변환하여배열로리턴 파라미터가없으면현재시각을리턴 예제 (date.php) <? $seoul = getdate(); print " 현재시간 : ". $seoul[year]. " 년 ". $seoul[mon]. " 월 ". $seoul[day]. " 일 ". $seoul[hours]. " 시 ". $seoul[minutes]. " 분 ". $seoul[seconds]. " 초 <br>"; Page 15 날짜변환 (2/4) getdate() 함수가리턴하는배열 항목 seconds minutes hours mday wday mon year yday weekday month 의미초분시간일 ( 달기준 ) 숫자로나타낸요일 (0: 일요일 ~ 6: 토요일 ) 숫자로나타낸달연도연도의시작으로부터날문자로나타낸요일 ( 예. Friday ) 문자로나타낸달 ( 예. January ) Page 16 8
날짜변환 (3/4) gmdate() string gmdate (string format [, int timestamp]) 현재시스템의 GMT 시간을리턴 format에따라서날짜또는시간등을문자열로리턴 timestamp는 1970년 1월 1일부터특정시간까지의기간을초로환산 mktime() int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst]) 파라미터로넘겨받은 hour, minute, second, month, day, year를 timestamp 값으로변환 is_dst는입력한시간대가낮시간대이면 1, 그렇지않으면 0을입력 Page 17 날짜변환 (4/4) gmdate(), mktime() 사용예제 (date_func.php) $year = gmdate ( Y ); $mon = gmdate ( m ); $day = gmdate ( d ); $hour = gmdate ( g ); $min = gmdate ( i ); $sec = gmdate ( s ); $seoul = getdate (mktime ($hour+9, $min, $sec, $mon, $day, $year)); print 서울시간 :. $seoul[year]. 년. $seoul[mon]. 월. $seoul[day]. 일. $seoul[hours]. 시. $seoul[minutes]. 분. $seoul[seconds]. 초 <br> ; $paris = getdate (mktime ($hour+1, $min, $sec, $mon, $day, $year)); print 파리시간 :. $paris[year]. 년. $paris[mon]. 월. $paris[day]. 일. $paris[hours]. 시. $paris[minutes]. 분. $paris[seconds]. 초 <br> ; Page 18 9
윤년계산 윤년계산방식 연도가 400으로나누어지면윤년이다. 연도가 4로는나눠지고 100으로나눠지지않으면윤년이다. 윤년계산의예제 (leap_year.php) $year = 2000; if (($year % 400) == 0) print $year. 년은윤년입니다.<br> ; else if (($year % 4) == 0) { if (($year % 100)!= 0) print $year. 년은윤년입니다.<br> ; else print $year. 년은윤년이아닙니다.<br> ; } else print $year. 년은윤년이아닙니다.<br> ; Page 19 문자열숫자 (1/4) 두정수더하기예제 $num1 = 999999999999; $num2 = $num1 + 2; print $num2. <br> ; 1E+12 PHP에서숫자표기의한계를 12자리 ( 혹은 14자리 ) 로제한했기때문 계산결과가 13자리의수이기때문에자동적으로숫자를부동소수점형식으로변환 임의의정밀도를갖는계산을하기위해 bcadd(), bcsub(), bcmul() 등의함수를사용 Page 20 10
문자열숫자 (2/4) 문자열숫자를다루는계산함수 string bcadd (string left, string right [, int scale]) string bcsub (string left, string right [, int scale]) string bcmul (string left, string right [, int scale]) string bcdiv (string left, string right [, int scale]) string bcmod (string left, string modulus) string bcsqrt (string operand [, int scale]) string bcpow (string operand, string exp) 각함수에서 scale 은소수점아래몇번째자리까지계산할지를지정 Page 21 문자열숫자 (3/4) 문자열숫자의예제 (num_scale.php) $num1 = 77777777777777777777777777777777777.5555555555555555555555555 ; $num2 = 22222222222222222222222222222222222.4444444444444444444444444 ; $value = bcadd ($num1, $num2, 20); print bcadd(num1, num2, 20):. $value. <br> ; $value = bcsub ($num1, $num2, 20); print bcsub(num1, num2, 20):. $value. <br> ; $value = bcmul ($num2, 2, 20); print bcmul(num2, \ 2\, 20):. $value. <br> ; $value = bcdiv ($num2, 2, 10); print bcdiv(num2, \ 2\, 10):. $value. <br> ; Page 22 11
문자열숫자 (4/4) π 값계산하기 급수를이용하여계산 (calc_pi.php) 12 ( 12/ 2 2 2 ) + ( 12/ 3 ) ( 12/ 4 2 2 ) + ( 12/ 5 ) = 12 ( 1) n n= 1 2 ( n+ 1) function pi_func ($iteration, $scale) { $value = 0 ; for ($i = 1; $i <= $iteration; $i++) { if (($i % 2) == 0) $value = bcsub($value,bcdiv(12,bcpow($i,2),$scale),$scale); else $value = bcadd($value,bcdiv(12,bcpow($i,2),$scale),$scale); } $pi_value = bcsqrt ($value, $scale); print ( PI:. $pi_value. <br> ); } pi_func (10000, 50); pi_func (20000, 50); pi_func (30000, 50); Page 23 난수발생시키기 (1/2) mt_srand() void mt_srand (int seed) 난수를발생시키기전에 seed 값을지정 mt_rand() int mt_rand (void) int mt_rand (int min, int max) 난수를생성 파라미터에아무런값도주지않으면, 0부터 RAND_MAX까지의숫자중에서하나의값을임의로선택하여리턴 파라미터에 min과 max를주면, min부터 max 까지의숫자사이에서하나의값을임의로선택하여리턴 Page 24 12
난수발생시키기 (2/2) 난수발생예제 (rand_ex.php) <? mt_srand((double)microtime() * 1000000); for($i=0;$i < 10;$i++) { $random1 = mt_rand(); $random2 = mt_rand(1, 1000); print "random1 = ".$random1.", random2 = ".$random2."<br>"; } Page 25 13