strstr(문자열, 찾을 문자)
찾을 문자열이 나온 처음 위치부터 끝까지 반환.
$temp = '오늘도;달린다';
$tmp = strstr($temp , ';');
출력 : 달린다
stristr(문자열, 찾을 문자)
strstr과 달리 대소문자를 구별하지 않는다.
만약 찾을 문자가 존재하지 않을 경우, FALSE를 반환한다.
// ';' 기호가 있는 문장은 제외할 것
if(stristr($temp, ';') == FALSE) fwrite($syn0, $temp."\t".$temp."\n");
else echo($temp . "<br/>");
strchr(문자열, 찾을 문자)
strstr() 과 동일
strrchr(문자열, 찾을 문자)
찾을 문자가 마지막으로 나온 위치부터 끝까지 반환
strrpos(문자열, 찾을 문자)
찾을 문자가 마지막으로 나타나는 위치를 정수형으로 반환
strlen(문자열)
문자열의 길이를 반환
$str = 'abcdef';
echo strlen($str); // 6
$str = ' ab cd ';
echo strlen($str); // 7
:띄어쓰기도 포함 한다
strtr(문자열, 원래 문자, 바꿀문자)
문자열에서 특정 문자를 새로운 문자로 바꾼다.
만약 바꿀 문자가 없을 경우, FALSE를 반환한다.
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
출력 : hello all, I said hi
붉은색은 자주 쓰는 함수
▶ 문자열 다듬기
- trim(), ltrim(), chop()에서 지우는 공백은 스페이스, '\n'(줄바꿈), '\t'(가로 탭), '\v',
○ trim();
- 문자열의 처음과 끝에 있는 공백을 지운다.
○ ltrim();
- 문자열의 처음에 있는 공백을 지운다.
○ chop();
- 문자열의 끝에 있는 공백을 지운다.
▶ 문자열 정돈
○ nl2br();
- 문자열중 줄바꿈문자(\n)를 XHTML에서의 줄바꾸기인 <br/>태그로 바꾸어 준다.(4.0.5 이전의 HTML에서는 <br>태그)
▶ 문자열의 대소문자 관련 함수
○ strtoupper();
- 모든 알파벳을 대문자로
○ strtolower();
- 모든 알파벳을 소문자로
○ ucfirst();
- 문장의 처음이 알파벳이면 그것만 대문자로
○ ucword();
- 각 단어의 첫 알파벳을 대문자로
▶ 문자열 나누고 합치기
○ explode();
- 지정 문자를 기준으로 문자열의 전, 후를 나누어 배열로 저장한다.
ex) $email = 'email@email.com'; $email_array = explode('@', $email);
$email_array[0] → 'email'; $email_array[1] → 'email.com';
○ implode();, join();
- 지정 문자를 기준으로 배열을 전, 후에 배치하여 문자열을 합친다.
ex) $new_email = implode('@', email_array); $new_email → 'email@email.com';
○ strtok();
- 지정 토큰문자로 토큰화 해서 구분
ex)
$token = strtok($feedbak, ' ') // 처음 토큰화 하기
echo $token.'<br />';
while ($token!= ''){
$token = strtok(' '); // 두번째 토큰화 (토큰화하고 싶은)
echo $token.'<br />';
}
○ substr();
- 문자열 중 특정 시작부분과 끝부분 사이의 문자열을 추출하는데 사용한다.
ex) $test = 'PHP Webprogramming';
$test1 = substr($test, 1); $test2 = substr($test, -1); $test3 = substr($test, 5, 8); $test4 = substr($test, 4, -2);
$test1 → 'HP Webprogramming'(앞에서 1번 부터)
$test2 → 'g'(뒤에서 1번 부터)
$test3 → 'ebprogra'(앞에서 5번부터 8개)
$test4 → 'Webprogrammi'(앞에서 4번부터 뒤에서 2번까지)
▶ 문자열 비교하기
○ strcmp();
- C언어에서의 함수와 같다. 앞의 문자열을 기준으로 같으면 0을, 우선순위가 높으면 -1을, 반대의 경우에는 1을 리턴한다.
- 단, 대문자와 소문자의 경우 소문자가 우선순위가 더 높다.(ASCII코드의 대소관계를 생각하면 쉽다.)
○ strcasecmp();
- C언어에서의 stricmp()와 같다. 두 문자열을 비교하는 것은 strcmp()와 같지만 대소문자를 구분하지 않는다.
○ strnatcmp(); & strnatcasecmp();
- 이 두 함수는 문자열을 좀더 자연스러운 기준에서 비교한다.(strnatcmp("12","2")의 결과는 1이다.)
- 이 두 함수의 차이는 대소문자의 구분여부이다.(이 두 함수의 차이는 case의 유무여부이다.)
▶ 문자열의 길이 확인하기
○ strlen();
- C언어에서의 함수와 같다. 문자열의 길이를 정수값으로 리턴해준다.
▶ 문자열 안에서 문자열 찾기
○ strstr();
- 문자열 안에서 특정 문자열과 일치하는 부분이 있는지 찾아내는데 쓰이는 함수이다.
- 일치하는 문자열이 있을 때는 해당 문자열이나 문자를 포함하여 이후 문자열을 리턴한다.
- 일치하는 문자열이 없을 시에는 false를 리턴한다.
ex) $str='Lion sleep to night'; $res = strstr($str, 'sleep');
$res → 'sleep to night'
○ stristr();
- strstr()과 같으나 대소문자를 구분하지 않는다.(ABC, Abc, aBC모두 같은 것으로 취급한다.)
○ strchr();
- strstr()과 같으나 문자열대신 문자를 찾는다.
○ strrch();
- strchr()과 같으나 뒤에서 부터 일치하는 문자를 찾기 때문에 마지막으로 나타난 문자부터 문자열을 출력한다.
▶ 문자열의 위치 찾아내기
○ strpos();
- 문자열 내에서 일치하는 문자열이나 문자를 찾아 문자열 대신 해당 위치를 숫자로 알려준다.
ex) $test = 'Ice cream'; $res1 = strpos($test, 'a'); $res2 = strpos($test, 'e');
$res1 → 7(0부터 시작한다.) $res2 = 2(일치하는 문자나 문자열이 많을 경우 가장 앞의 것을 기준으로 한다.)
ex) $test = 'Ice cream'; $res = strpos($test, 'e', 4);
$res = 6(앞에서부터 4번째에 있는 c부터 해당문자열의 위치를 찾는다.)
○ strrpos();
- strpos와 비슷하나 찾는 문자가 가장 마지막에 보이는 곳의 위치를 리턴한다.
※ 두 함수 모두 만약 문자열에 needle(찾는 문자나 문자열)이 없으면 false를 리턴하는데 PHP에서는 false를 0과 같다고 보기 때문에
위치 0을 리턴한것인지 false를 리턴한 것인지 구분할 수가 없다. 이 문제는 === 연산자를 사용하여 해결할 수 있다.
ex) $res = strpos('Hello world', 'H'); //이 경우에는 가장 앞에 'H'가 있기 때문에 0을 리턴하지만 PHP는 false와 구분하지 못한다.
if($res === false)
echo 'Not found';
else
echo 'Found at position 0';
▶ 문자열 대체하기
○ str_replace();
- 문자열에서 문자열를 찾아 대체문자열로 바꾸어 리턴한다.
ex) $test = 'Change'; $res = str_replace('g', 'c', $test);
$res → 'Chance'
○ substr_replace();
- 특정 위치의 문자열을 대체문자열로 바꾸어 리턴한다.
ex) $test = 'Vitamin A'; $res = substr_replace($test, 'C', -1);
$res → 'vitamin C'
1.addslashes(문자열)
:문자열이 작은따옴표나 큰따옴표 또는 역슬래시 같은 문자를 담고 있을 경우 이 문자 앞에 역슬래시 문자를 추가하여 준다.
데이터베이스 질의어 사용시 따옴표 같은 문자의 중복으로 인한 오류를 피하기 위해 사용한다.
2.stripslashes(문자열)
:역슬래시 처리가 된 문자에서 역슬래시를 제거하여 원상태로 되돌린다.
3.htmlspecialchars(문자열)
사용자가 HTML 코드를 포함하는 문자열을 입력 전송했을 때 이 HTML 코드를 HTML 형태가 아닌 문자열 그대로 출력해 준다.
<textarea name=comment cols=50 rows=10></textarea>
텍스트 폼 안에 <a href="http://www.daum.net">이승혁</a> 를 입력한 후 전송했을 때 결과
echo $comment; // 이승혁
echo htmlspecialchars($comment); // <a href="http://www.daum.net">이승혁</a>
php.ini 중 magic_quotes_gpc 항목이 on일 경우:
<a href=\"http://www.daum.net\">이승혁</a> 로 출력된다.
4.nl2br(문자열)
:사용자가 입력한 문자열을 사용자가 입력한 그대로 줄바꿈 처리해 준다.
5.echo(문자열)
:입력한 문자열을 출력한다.
6.print()
:입력한 문자열을 출력한다.
7.sprintf(형식,변수)
:문자열을 지정한 형식으로 반환한다.
$a=18.2;
$b=7.4
sprintf("%03.2f - %0.2f", $a, $b)
//025.6-10.08 : 뒤에 문자들을 처음 인자에 차례로 대입
%d:정수 %04d:네 자리로 출력하되 빈 공간은 0으로 채운다
%f:부동소수 %'x4.2f : 실수를 네 자리로 출력하되 빈 공간은 x로 채우고, 소수점 이하 2자리 출력
0 이외의 문자는 문자 앞에 '를 붙여준다.
8.printf (형식,변수)
:지정한 형식대로 문자 출력. sprintf()와 같다.
9.explode(구분자, 문자열 , [배열의 최대크기])
:문자열을 지정해 준 구분자로 분리하여 배열에 저장한다.
ex1:
$fruit="사과-귤-감-오렌지";
$name=explode("-", $fruit); //"$name[0]=사과 , $name[1]=귤, $name[2]=감, $name[3]=오렌지" 가 입력된다.
ex2:
$name=explode("-", $fruit, 3); //$name[0]=사과, $name[1]=귤, $name[2]=감-오렌지
배열최대크기가 3이므로 마지막 3번째 배열에 남은 모든 배열 값이 저장된다.(구분되지 않은채)
10.implode(구분자,문자열)
explode()와 반대의 기능으로 각 배열을 구분자로 연결하여 하나로 출력한다.
11.join (구분자, 문자열)
:implode()와 동일한 기능을 수행
12.split (패턴, 문자열, [배열의 최대크기])
:explode()함수와 비슷한 기능을 하지만, 구분자 대신 정규 표현식을 사용하여 좀 더 정교하게 문자열을 분리할 수 있다.
13.strcmp(문자열1, 문자열2)
:두 개의 문자열을 비교하여 일치하면 0, 일치하지 않으면 앞문자가 크면 1, 뒷문자가 크면 -1 반환
14.substr(문자열, 시작위치값, [추출할 길이])
:문자열의 일부를 추출할 때 사용한다.
시작 위치값: 양수이면 앞에서부터 음수이면 뒤에서 부터이다.
앞에서부터일 경우는 0, 뒤에서부터일 경우는 1부터 시작한다.
추출할 길이:음수이면 추출한 결과값에서 문자열의 끝에서 그 길이만큼을 잘라낸다.
생략시 지정한 시작 위치값부터 끝까지 추출한다.
substr("abcdefg", 1, 3) //bcd
substr("abcdefg", -3) //efg
substr("abcdefg", -3, -2) //e
substr("abcdefg", 1, -3) //bcd
substr("abcdefg", -6, -1) //bcdef
15.strstr(문자열, 찾고자하는 문자열)
:전체 문자열에서 찾고자하는 문자열이 처음 나온 위치부터 끝까지 반환한다.
$email = 'user@example.com ' $domain = strstr($email, '@'); echo $domain; // @example.com 을 출력.
16.stristr(문자열, 찾고자하는 문자열)
:strstr()은 대소문자를 구별하지만 이 함수는 대소문자를 구분하지 않는다.
17.strchr(문자열, 찾고자하는 문자열)
:strstr() 함수의 별칭으로 strstr() 함수와 완전히 동일하다.
18.strrchr(문자열, 찾고자하는 문자열)
:전체 문자열을 검사하고 찾고자 하는 문자열이 마지막으로 나타나는 위치부터 끝까지 반환
19.strpos(문자열, 찾고자하는 문자열, [검색시작위치값])
:검색 대상 문자열이 처음으로 나타나는 위치를 정수형으로 반환한다.
20.strrpos(문자열, 찾고자하는 문자열)
:검색 대상 문자열이 마지막으로 나타나는 위치를 정수형으로 반환한다.
21.strlen(문자열)
:문자열의 길이를 반환한다.
22.strtolower(문자열)
:문자열을 소문자로 바꿔준다.
23.strtoupper(문자열)
:문자열을 대문자로 바꿔준다.
24.ucfirst(문자열)
:문자열의 첫 글자를 대문자로 바꾼다.
25.ucwords(문자열)
:문자열의 각 단어의 첫 글자를 대문자로 바꾼다.
26.strrev(문자열)
:문자열의 순서를 정반대로 바꾼다.
27.strtr(문자열, 원래 문자, 치환하고픈 문자)
:문자열에서 특정 문자를 새로운 문자로 바꾼다.
ex)
$str="a blue angel of Hyper world";
strtr($str, "angel", "seagull"); //a blue seagu of Hyper world :5자리만 치환되고 나머진 무시
strtr($str, "angel", "sea"); // a blue seael of Hyper world :3자리만 치환되고 나머진 원래 문자 그대로
ex)
$str="What a wonderful day";
$arr=ary("wonderful"=>"nice", "day"=>"night");
strtr($str, $arr) //What a nice night : 배열 사용시 키에 해당하는 문자를 배열의 값으로 모두 치환한다.
28.str_replace(원래문자, 치환하고픈 문자, 문자열)
strtr()과 유사하나, 자리수를 따지지 않고 모든 문자를 그대로 치환한다.
ex)
$str=a blue angel of Hyper world
str_replace("angel", "seagull", $str); //a blue seagull of Hyper world
29.chop(문자열)
:문자열 뒷부분의 공백을 제거한다.
30.trim(문자열)
:문자열 앞 뒤의 공백을 모두 제거한다.
31.ltrim(문자열)
:문자열 앞 부분 공백을 제거한다.
32.rtrim(문자열)
:문자열 뒷 부분 공백을 제거한다.
33.quotemeta(문자열)
:메타 문자 앞에 역슬래시 문자를 붙여 반환한다.
메타문자로 취급하는 문자: . \\ + * ? [ ^ ] ( $ )
34.ord(문자열)
:문자열의 첫 번째 문자에 대한 아스키 코드값을 반환한다
35.chr(아스키코드값)
:아스키 코드값에 해당하는 문자를 반환한다.
36.parse_str(문자열)
:GET 방식으로 넘어오는 변수들을 따로 저장할 수 있다.
ex)
$str="page_num=1&key=php&keyoword=subject";
parse_str($str); //page_num=1, key=php, keyword=subject 가 저장
37.strip_tags(문자열, [허용할 태그])
:인자로 전달받은 문자열에서 HTML과 PHP 태그를 모두 제거한 문자열을 반환한다.
38.ob_start()
출력버퍼링을 사용할 수 있도록 한다.
39.ob_get_contents()
:출력 버퍼에 저장되어 있는 내용을 반환한다.
40.ob_end_flush()
출력 버퍼에 저장되어 있던 내용을 비우고 출력 버퍼링 기능을 해제한다.
41.ob_end_clean()
:출력 버퍼의 내용을 비우고 버퍼링 기능을 해제한다.
42.flush()
:출력 버퍼의 내용을 비운다.
43.str_repeat(반복할 문자, 반복횟수)
:문자열을 지정한 횟수만큼 반복 출력한다.
44.substr_count(문자열, 특정문자)
문자열에서 특정문자열이 몇 번 반복 되었는지 횟수를 반환한다.
45.crypt(문자열)
:인자로 전달한 문자열을 암호화한다.
46.chunk_split(문자열, 기호삽입간격, 삽입할기호)
특정 문자열 길이마다 특정 기호를 붙여준다.
47.wordwrap(문자열, 길이, 구분자, 단어나눔여부)
지정한 문자열을 특정 구분자로 나누어준다.
단어나눔여부 : 1이상의 수를 지정시 한단어도 지정한 길이로 나누어준다.
지정하지 않았을 때는 하나의 단어는 지정한 길이를 초과하더라도 나누지 않는다.
$text = "A very long woooooooooooord."; wordwrap($text,2,"<br>") //A-very-long-woooooooooooord. wordwrap($text,2,"*",1); //A*ve*ry*lo*ng*wo*oo*oo*oo*oo*oo*or*d.
48.bcsub(앞문자, 뒷문자, [소수점이하자리수])
앞에 숫자에서 뒤의 숫자를 뺀 값을 문자열로 반환한다.
이때 결과 값은 지정한 소수점 이하 자리수까지 계산되며 미지정시 정수로 반환된다
<!--? /* PHP 문자열 함수 ● 문자열 다듬기 - trim(), ltrim(), chop()에서 지우는 공백은 스페이스, '\n'(줄바꿈), '\t'(가로 탭), '\v', */ $str = trim($str); //문자열의 처음과 끝에 있는 공백을 지운다. $str = ltrim($str);// 문자열의 처음에 있는 공백을 지운다. $str = chop($str); // 문자열의 끝에 있는 공백을 지운다. /* ● 문자열 정돈 */ $str = nl2br($str); //문자열중 줄바꿈문자(\n)를 XHTML에서의 줄바꾸기인 <br/-->태그로 바꾸어 준다.(4.0.5 이전의 HTML에서는 <br><span id="callbacknestghkdxodntistorycom255630" style="width:1px; height:1px; float:right"><embed allowscriptaccess="always" id="bootstrapperghkdxodntistorycom255630" src="http://ghkdxodn.tistory.com/plugin/CallBack_bootstrapperSrc?nil_profile=tistory&nil_type=copied_post" width="1" height="1" wmode="transparent" type="application/x-shockwave-flash" enablecontextmenu="false" flashvars="&callbackId=ghkdxodntistorycom255630&host=http://ghkdxodn.tistory.com&embedCodeSrc=http%3A%2F%2Fghkdxodn.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fs1.daumcdn.net%2Fcfs.tistory%2Fresource%2F624%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D25%26callbackId%3Dghkdxodntistorycom255630%26destDocId%3Dcallbacknestghkdxodntistorycom255630%26host%3Dhttp%3A%2F%2Fghkdxodn.tistory.com%26float%3Dleft" swliveconnect="true"></span>태그) /* ● 문자열의 대소문자 관련 함수 */ $str = strtoupper($str); // 모든 알파벳을 대문자로 $str = strtolower($str); // 모든 알파벳을 소문자로 $str = ucfirst($str); //문장의 처음이 알파벳이면 그것만 대문자로 $str = ucword($str); //각 단어의 첫 알파벳을 대문자로 /* ● 문자열 나누고 합치기 */ $str = explode($str); // 지정 문자를 기준으로 문자열의 전, 후를 나누어 배열로 저장한다. /* ex) $phone = '010-1234-5678'; $phone_array = explode('-', $phone); $phone_array[0] → '010'; $phone_array[1] → '1234'; $phone_array[2] → '5678'; */ $phone = implode('-', $phone_array); //지정 문자를 기준으로 배열을 전, 후에 배치하여 문자열을 합친다. $phone = join('-', $phone_array); // 위와 동일함 //ex) $phone = implode('-', $phone_array); $phone → '010-1234-5678'; /* ● 문자열 자르기 */ $str = substr($str); //문자열 중 특정 시작부분과 끝부분 사이의 문자열을 추출하는데 사용한다. $str = 'PHP Webprogramming'; $str1 = substr($str, 1); //'HP Webprogramming'(앞에서 1번 부터) $str2 = substr($str, -1); // 'g'(뒤에서 1번 부터) $str3 = substr($str, 5, 8); //'ebprogra'(앞에서 5번부터 8개) $str4 = substr($str, 4, -2); //'Webprogrammi'(앞에서 4번부터 뒤에서 2번까지) /* ● 문자열 비교하기 */ $string = eregi($pattern, $string) // 대소문자 구분없이 검색 $string = "AbCdeFghiJ"; if(eregi("abcdefghij", $string)) echo "find!"; $string = ereg($pattern, $string) // 대소문자를 구분하여 검색 $string = "AbCdeFghiJ"; if(ereg("abcdefghij", $string)) echo "find!"; $str = strcmp($str); $var1 = "Hello"; $var2 = "Hello"; if (strcmp($var1, $var2) == 0) { echo '대소문자 구분하며, 두문자가 같으면 0을 반환 합니다.'; } // C언어에서의 함수와 같다. 앞의 문자열을 기준으로 같으면 0을, 우선순위가 높으면 -1을, 반대의 경우에는 1을 리턴한다. // 단, 대문자와 소문자의 경우 소문자가 우선순위가 더 높다.(ASCII코드의 대소관계를 생각하면 쉽다.) $str = strcasecmp($str);// C언어에서의 stricmp()와 같다. 두 문자열을 비교하는 것은 strcmp()와 같지만 대소문자를 구분하지 않는다. $var1 = "Hello"; $var2 = "hello"; if (strcasecmp($var1, $var2) == 0) { echo '대소문자를 구별하지 않는 문자열 비교에서 $var1은 $var2와 동일합니다.'; } /* ● 문자열의 길이 확인하기 */ $str = strlen($str); // C언어에서의 함수와 같다. 문자열의 길이를 정수값으로 리턴해준다. /* ● 문자열 안에서 문자열 찾기 */ $str = strstr($str,'search'); $str='Lion sleep to night'; $res = strstr($str, 'sleep'); $res → 'sleep to night' //문자열 안에서 특정 문자열과 일치하는 부분이 있는지 찾아내는데 쓰이는 함수이다. //일치하는 문자열이 있을 때는 해당 문자열이나 문자를 포함하여 이후 문자열을 리턴한다. //일치하는 문자열이 없을 시에는 false를 리턴한다. $str = stristr($str,'search'); // strstr()과 같으나 대소문자를 구분하지 않는다.(ABC, Abc, aBC모두 같은 것으로 취급한다.) $str = strchr($str,'search'); // strstr()과 같으나 문자열대신 문자를 찾는다. $str = strrch($str,'search'); // strchr()과 같으나 뒤에서 부터 일치하는 문자를 찾기 때문에 마지막으로 나타난 문자부터 문자열을 출력한다. /* ● 문자열의 위치 찾아내기 */ $str = strpos($str, 'char'); // 문자열 내에서 일치하는 문자열이나 문자를 찾아 문자열 대신 해당 위치를 숫자로 알려준다. $test = 'Ice cream'; $res1 = strpos($test, 'a'); //7(0부터 시작한다.) $res2 = strpos($test, 'e'); //2(일치하는 문자나 문자열이 많을 경우 가장 앞의 것을 기준으로 한다.) $res = strpos($test, 'e', 4); //6(앞에서부터 4번째에 있는 c부터 해당문자열의 위치를 찾는다.) // ※ 이 예에서는 문자만 사용하였지만 문자열도 얼마든지 사용할 수 있다. $str = strrpos($str, 'char'); // strpos와 비슷하나 찾는 문자가 가장 마지막에 보이는 곳의 위치를 리턴한다. $res = strpos('Hello world', 'H'); //이 경우에는 가장 앞에 'H'가 있기 때문에 0을 리턴하지만 PHP는 false와 구분하지 못한다. if($res === false){ echo 'Not found'; }else{ echo 'Found at position 0'; } //strrpos()는 strpos()와 달리 문자만 사용할 수 있다. // 두 함수 모두 만약 문자열에 needle(찾는 문자나 문자열)이 없으면 false를 리턴하는데 PHP에서는 false를 0과 같다고 보기 때문에 //위치 0을 리턴한것인지 false를 리턴한 것인지 구분할 수가 없다. 이 문제는 === 연산자를 사용하여 해결할 수 있다. /* ● 문자열 대체하기 */ $res = str_replace('g', 'c', $test); // 문자열에서 문자열를 찾아 대체문자열로 바꾸어 리턴한다. $test = 'Change'; $res = str_replace('g', 'c', $test); // 'Chance' $res = substr_replace($test, 'C', -1); // 특정 위치의 문자열을 대체문자열로 바꾸어 리턴한다. $test = 'Vitamin A'; $res = substr_replace($test, 'C', -1); // 'vitamin C' ?>
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5