mi-jung choi department of computer science kangwon national university, korea

18
Mi-Jung Choi Mi-Jung Choi Department of Computer Science Department of Computer Science Kangwon National University, Korea Kangwon National University, Korea 웹 웹웹 웹웹

Upload: joan-maldonado

Post on 04-Jan-2016

53 views

Category:

Documents


0 download

DESCRIPTION

웹 연동 기술. Mi-Jung Choi Department of Computer Science Kangwon National University, Korea. URL 분석 (1/2). 웹 연동 기술. URL (Uniform Resource Locator) 프로토콜 , 호스트 , 포트 , 경로 , 비밀번호 , User 등의 정보를 포함 예 . http://kim:[email protected]:80/doc/index.html URL 을 속성별로 분리하고자 할 경우 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Mi-Jung ChoiMi-Jung Choi

Department of Computer ScienceDepartment of Computer Science

Kangwon National University, KoreaKangwon National University, Korea

웹 연동 기술

Page 2: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 2

URL (Uniform Resource Locator)

• 프로토콜 , 호스트 , 포트 , 경로 , 비밀번호 , User 등의 정보를 포함

• 예 . http://kim:[email protected]:80/doc/index.html

URL 을 속성별로 분리하고자 할 경우

• parse_url() 함수 사용

• 분리한 결과는 array 에 저장 ( 리턴 )

parse_url

URL URL 분석 분석 (1/2)(1/2)웹 연동 기술

array parse_url (string url)

Page 3: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 3

URL URL 분석 분석 (2/2)(2/2)웹 연동 기술

<?PHP

$parse_arr = parse_url (“http://kim:[email protected]:80/doc/index.html”);

print $parse_arr[host].”<br>”;

print $parse_arr[port].”<br>”;

print $parse_arr[path].”<br>”;

print $parse_arr[user].”<br>”;

print $parse_arr[pass].”<br>”;

?>

예제 (parse_url.php)

Page 4: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 4

다른 홈페이지의 문서를 읽어오거나 URL 문서에서 필요한 정보를 추출하는 방법

• fopen() 함수를 이용하여 매개 변수 위치에 URL 을 삽입

홈페이지의 문서를 읽어와서 출력 (readsite1.php)

URL URL 내용 읽어오기 내용 읽어오기 (1/4)(1/4)웹 연동 기술

<?PHP

$fp = fopen (“http://kr.yahoo.com/”,”r”)

or die (“ 요청하신 페이지를 읽어올 수 없습니다 .”);

while ($line = fgets($fp, 1024))

{

print $line;

}

fclose ($fp);

?>

Page 5: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 5

수행 결과 (readsite1.php)

URL URL 내용 읽어오기 내용 읽어오기 (2/4)(2/4)웹 연동 기술

Page 6: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 6

다른 방법

• fopen() 및 fgets() 대신에 readfile() 함수를 사용

• readfile() 함수는 파일의 내용을 읽어서 바로 출력하기 때문에 별도의 읽기 및 출력 과정이 필요하지 않음

• 주의점 : 파일의 이름을 넘겨주는 파라미터에 반드시 사용하는 프로토콜 (http://) 을 지정하는 부분이 들어가야 함

예제 (readsite2.php)

URL URL 내용 읽어오기 내용 읽어오기 (3/4)(3/4)웹 연동 기술

<?PHP

readfile (“http://www.daum.net/”);

?>

Page 7: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 7

수행 결과 (readsite2.php)

URL URL 내용 읽어오기 내용 읽어오기 (4/4)(4/4)웹 연동 기술

Page 8: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 8

특정 사이트의 문서에 포함되어 있는 링크만을 읽어올 경우

• <A HREF> 태그로 시작되는 부분을 읽어옴( 예 : <A HREF=“http://cs.kangwon.ac.kr> ..)

• 정규 표현식을 사용하여 태그를 찾음

• 개념적 표현 형태 :<, 임의의 문자들 , a, 임의의 문자들 , href=, 임의의 문자들 , >, 임의의 문자들 , </, 임의의 문자들 , a, 임의의 문자들 , > 순

• 정규 표현식 형태 : “/<.*a.*href=.*>.*<\/.*a.*>/”

링크링크 (link) (link) 읽어오기 읽어오기 (1/3)(1/3)웹 연동 기술

Page 9: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 9

예제 (parse_link.php)

링크링크 (link) (link) 읽어오기 읽어오기 (2/3)(2/3)웹 연동 기술

<?PHP

$fp = fopen (“http://www.hani.co.kr/”, ”r”)

or die (“URL 을 열수 없습니다 .”);

while ($str = fgets ($fp, 1024))

{

if (preg_match_all (‘/<.*a.*href=.*>.*<\/.*a.*>/’, $str, $url_str))

{

foreach ($url_str[0] as $match)

print $match.”<br>”;

}

}

?>

• preg_match_all(string pattern, string subject, array matches):스트링 subject 에서 주어진 pattern 을 모두 찾아서 배열 matches 에 저장하는 함수첫번째 매치가 배열 $matches[0] 에 저장됨 (c.f., $matches[1] 에는 서브 패턴이 저장됨 )

Page 10: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 10

수행 결과

링크링크 (link) (link) 읽어오기 읽어오기 (3/3)(3/3)웹 연동 기술

Page 11: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 11

예상 문제점

• 특수문자의 처리

• 예를 들어 ‘ <’ 와 ‘ >’ 사이에 있는 문자는 HTML 에서 태그로 인식 변환이 필요

예제 (linkexample.php)

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (1/6)(1/6)웹 연동 기술

<?PHP

$text_array = file (“example.txt”)

foreach ($text_array as $line)

{

print $line;

}

?>

grapes lemon <pear> mango <orange> apple grapes lemon <pear> mango <orange> apple

Page 12: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 12

출력 결과

<pear> 와 <orange> 가 출력되지 않았음 why? HTML 에서 태그로 인식되었음

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (2/6)(2/6)웹 연동 기술

Page 13: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 13

HTML 에서는 ,

• HTML 태그나 “엔터” 문자를 브라우저에서 인식하지 못함

• 이 문제점을 해결하기 위해서는 각 문자를 다른 기호로 나타내어야 함

− 공백 문자 &nbsp;

− < &lt; (lt means “less than”)

− > &gt; (gt means “greater than”)

HTML 에서 사용되는 엔티티들을 특수한 문자로 바꿀 경우

• htmlentities() 사용 (c.f., 유사한 함수로 htmlspecialchars() 사용 )

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (3/6)(3/6)웹 연동 기술

Page 14: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 14

htmlentities

• string: HTML 로 변환하고자 하는 문자열

• quote_style: “ 와 ‘ 중 어느 것으로 변환할 것인지 지정

• charset: 문자열의 문자 집합

• 참조 : http://kr.php.net/manual/kr/function.htmlentities.php

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (4/6)(4/6)웹 연동 기술

string htmlentities (string string [,int quote_style [,string charset]]))

Page 15: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 15

nl2br

• “ 엔터” 문자의 변환 (new line(“\n”) 을 “ <br>” 로 변환하는 함수 )

수정된 예제 (linkexample2.php)

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (5/6)(5/6)웹 연동 기술

string nl2br (string string)

<?PHP

$text_array = file (“example.txt”)

foreach ($text_array as $line)

{

print nl2br (htmlentities ($line));

}

?>

• file(): 파일 전체를 읽어서 배열에 저장하는 함수

Page 16: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 16

수행 결과

일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (6/6)(6/6)웹 연동 기술

Page 17: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 17

HTML 문서를 일반 문서로 바꿀 경우

• HTML 문서의 모든 태그를 삭제

• <br> 을 “엔터”로 변환

HTML 태그를 삭제하는 방법

• strip_tags() 함수를 사용

• <br> 을 엔터 문자로 변환하는 함수는 없음 정규 표현식 이용하여 변환

strip_tags: HTML 태그를 제거함 (

http://kr.php.net/manual/kr/function.strip-tags.php)

HTML HTML 문서 문서 일반 텍스트 문서 일반 텍스트 문서 (1/2)(1/2)웹 연동 기술

string strip_tags (string str [, string allowable_tags])

Page 18: Mi-Jung Choi Department of Computer Science Kangwon  National University, Korea

Web ProgrammingPage 18

예제 (html2txt.php)

HTML HTML 문서 문서 일반 텍스트 문서 일반 텍스트 문서 (2/2)(2/2)웹 연동 기술

<?PHP

$html_file = file (“htmlexample.html”);

$fp = fopen (“destfile.txt”, “w”);

foreach ($html_file as $line)

{

$line = eregi_replace (“<br>”, “\n”, $line);

$line = strip_tags ($line);

fputs ($fp, $line);

}

fclose ($fp);

?>

<html>

<body>

grapes lemon pear<br> mango orange apple

</body>

</html>

<html>

<body>

grapes lemon pear<br> mango orange apple

</body>

</html>

• eregi_replace(): 주어진 패턴을 주어진 스트링으로 변환 ( 예 : <br> “\n”)