180 likes | 350 Views
웹 연동 기술. Mi-Jung Choi Department of Computer Science Kangwon National University, Korea. URL 분석 (1/2). 웹 연동 기술. URL (Uniform Resource Locator) 프로토콜 , 호스트 , 포트 , 경로 , 비밀번호 , User 등의 정보를 포함 예 . http://kim:3759@www.hostname.com:80/doc/index.html URL 을 속성별로 분리하고자 할 경우
E N D
웹 연동 기술 Mi-Jung Choi Department of Computer Science Kangwon National University, Korea
URL 분석 (1/2) 웹 연동 기술 • URL (Uniform Resource Locator) • 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의 정보를 포함 • 예. http://kim:3759@www.hostname.com:80/doc/index.html • URL을 속성별로 분리하고자 할 경우 • parse_url() 함수 사용 • 분리한 결과는 array에 저장(리턴) • parse_url arrayparse_url (stringurl)
URL 분석 (2/2) 웹 연동 기술 • 예제 (parse_url.php) <?PHP $parse_arr = parse_url (“http://kim:3579@www.hostname.com: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>”; ?>
URL 내용 읽어오기 (1/4) 웹 연동 기술 • 다른 홈페이지의 문서를 읽어오거나 URL 문서에서 필요한 정보를 추출하는 방법 • fopen() 함수를 이용하여 매개 변수 위치에 URL을 삽입 • 홈페이지의 문서를 읽어와서 출력 (readsite1.php) <?PHP $fp = fopen (“http://kr.yahoo.com/”,”r”) ordie (“요청하신 페이지를 읽어올 수 없습니다.”); while ($line = fgets($fp, 1024)) { print$line; } fclose ($fp); ?>
URL 내용 읽어오기 (2/4) 웹 연동 기술 • 수행 결과 (readsite1.php)
URL 내용 읽어오기 (3/4) 웹 연동 기술 • 다른 방법 • fopen() 및 fgets() 대신에 readfile() 함수를 사용 • readfile() 함수는 파일의 내용을 읽어서 바로 출력하기 때문에 별도의 읽기 및 출력 과정이 필요하지 않음 • 주의점: 파일의 이름을 넘겨주는 파라미터에 반드시 사용하는 프로토콜(http://)을 지정하는 부분이 들어가야 함 • 예제 (readsite2.php) <?PHP readfile (“http://www.daum.net/”); ?>
URL 내용 읽어오기 (4/4) 웹 연동 기술 • 수행 결과 (readsite2.php)
링크(link) 읽어오기 (1/3) 웹 연동 기술 • 특정 사이트의 문서에 포함되어 있는 링크만을 읽어올 경우 • <A HREF> 태그로 시작되는 부분을 읽어옴(예: <A HREF=“http://cs.kangwon.ac.kr> ..) • 정규 표현식을 사용하여 태그를 찾음 • 개념적 표현 형태:<, 임의의 문자들, a, 임의의 문자들, href=, 임의의 문자들, >, 임의의 문자들, </, 임의의 문자들, a, 임의의 문자들, > 순 • 정규 표현식 형태:“/<.*a.*href=.*>.*<\/.*a.*>/”
링크(link) 읽어오기 (2/3) 웹 연동 기술 • 예제 (parse_link.php) <?PHP $fp = fopen (“http://www.hani.co.kr/”, ”r”) ordie (“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]에는 서브 패턴이 저장됨)
링크(link) 읽어오기 (3/3) 웹 연동 기술 • 수행 결과
일반 텍스트 문서 HTML 문서 (1/6) 웹 연동 기술 • 예상 문제점 • 특수문자의 처리 • 예를 들어 ‘<’와 ‘>’ 사이에 있는 문자는 HTML에서 태그로 인식 변환이 필요 • 예제 (linkexample.php) grapes lemon <pear> mango <orange> apple <?PHP $text_array = file (“example.txt”) foreach ($text_array as$line) { print $line; } ?>
일반 텍스트 문서 HTML 문서 (2/6) 웹 연동 기술 • 출력 결과 • <pear>와 <orange>가 출력되지 않았음 why? HTML에서 태그로 인식되었음
일반 텍스트 문서 HTML 문서 (3/6) 웹 연동 기술 • HTML에서는, • HTML 태그나 “엔터” 문자를 브라우저에서 인식하지 못함 • 이 문제점을 해결하기 위해서는 각 문자를 다른 기호로 나타내어야 함 • 공백 문자 • < < (lt means “less than”) • > > (gt means “greater than”) • HTML에서 사용되는 엔티티들을 특수한 문자로 바꿀 경우 • htmlentities() 사용 (c.f., 유사한 함수로 htmlspecialchars() 사용)
일반 텍스트 문서 HTML 문서 (4/6) 웹 연동 기술 • htmlentities • string: HTML로 변환하고자 하는 문자열 • quote_style: “와 ‘ 중 어느 것으로 변환할 것인지 지정 • charset: 문자열의 문자 집합 • 참조: http://kr.php.net/manual/kr/function.htmlentities.php stringhtmlentities (stringstring [,intquote_style [,stringcharset]]))
일반 텍스트 문서 HTML 문서 (5/6) 웹 연동 기술 • nl2br • “엔터” 문자의 변환 (new line(“\n”)을 “<br>”로 변환하는 함수) • 수정된 예제 (linkexample2.php) stringnl2br (stringstring) <?PHP $text_array = file (“example.txt”) foreach ($text_array as$line) { printnl2br (htmlentities ($line)); } ?> • file(): 파일 전체를 읽어서 배열에 저장하는 함수
일반 텍스트 문서 HTML 문서 (6/6) 웹 연동 기술 • 수행 결과
HTML 문서 일반 텍스트 문서(1/2) 웹 연동 기술 • HTML 문서를 일반 문서로 바꿀 경우 • HTML 문서의 모든 태그를 삭제 • <br>을 “엔터”로 변환 • HTML 태그를 삭제하는 방법 • strip_tags() 함수를 사용 • <br>을 엔터 문자로 변환하는 함수는 없음 정규 표현식 이용하여 변환 • strip_tags: HTML 태그를 제거함 (http://kr.php.net/manual/kr/function.strip-tags.php) stringstrip_tags (stringstr [, stringallowable_tags])
HTML 문서 일반 텍스트 문서(2/2) 웹 연동 기술 • 예제 (html2txt.php) <html> <body> grapes lemon pear<br> mango orange apple </body> </html> <?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); ?> • eregi_replace(): 주어진 패턴을 주어진 스트링으로 변환 (예: <br> “\n”)