PHP 웹 프로그래밍 (PHP Web Programming) 웹 연동 기술 문양세 강원대학교 IT대학 컴퓨터과학전공
URL 분석 (1/2) URL (Uniform Resource Locator) URL을 속성별로 분리하고자 할 경우 웹 연동 기술 URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의 정보를 포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL을 속성별로 분리하고자 할 경우 parse_url() 함수 사용 분리한 결과는 array에 저장(리턴) parse_url array parse_url (string url)
URL 분석 (2/2) 예제 (parse_url.php) <?PHP 웹 연동 기술 예제 (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 문서에서 필요한 정보를 추출하는 방법 웹 연동 기술 다른 홈페이지의 문서를 읽어오거나 URL 문서에서 필요한 정보를 추출하는 방법 fopen() 함수를 이용하여 매개 변수 위치에 URL을 삽입 홈페이지의 문서를 읽어와서 출력 (readsite1.php) <?PHP $fp = fopen (“http://www.donga.com/”,”r”) or die (“요청하신 페이지를 읽어올 수 없습니다.”); while ($line = fgets($fp, 1024)) { print $line; } fclose ($fp); ?>
만일 readsite1.php가 잘 동작치 않으면(1/2) 웹 연동 기술 다음과 같은 오류가 발생한다면… “php.ini” 파일에서 다음과 같이 수정(Off On)해 주세요. 다음 장 계속 ->
만일 readsite1.php가 잘 동작치 않으면(2/2) 아파치를 재시작(stop start) 합니다.
URL 내용 읽어오기 (2/4) 웹 연동 기술 수행 결과 (readsite1.php)
URL 내용 읽어오기 (3/4) 다른 방법 예제 (readsite2.php) 웹 연동 기술 다른 방법 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) 웹 연동 기술 예제 (parse_link.php) <?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]에는 서브 패턴이 저장됨)
링크(link) 읽어오기 (3/3) 웹 연동 기술 수행 결과
일반 텍스트 문서 HTML 문서 (1/6) 예상 문제점 예제 (linkexample.php) 특수문자의 처리 웹 연동 기술 예상 문제점 특수문자의 처리 예를 들어 ‘<’와 ‘>’ 사이에 있는 문자는 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에서 사용되는 엔티티들을 특수한 문자로 바꿀 경우 웹 연동 기술 HTML에서는, HTML 태그나 “엔터” 문자를 브라우저에서 인식하지 못함 이 문제점을 해결하기 위해서는 각 문자를 다른 기호로 나타내어야 함 공백 문자 < < (lt means “less than”) > > (gt means “greater than”) HTML에서 사용되는 엔티티들을 특수한 문자로 바꿀 경우 htmlentities() 사용 (c.f., 유사한 함수로 htmlspecialchars() 사용)
일반 텍스트 문서 HTML 문서 (4/6) htmlentities string: HTML로 변환하고자 하는 문자열 웹 연동 기술 htmlentities string: HTML로 변환하고자 하는 문자열 quote_style: 따옴표(“와 ‘)에 대한 처리 방법 (아래 링크 참조) charset: 문자열의 문자 집합 참조: http://php.net/manual/kr/function.htmlentities.php string htmlentities (string string [,int quote_style [,string charset]]))
일반 텍스트 문서 HTML 문서 (5/6) nl2br 수정된 예제 (linkexample2.php) 웹 연동 기술 nl2br “엔터” 문자의 변환 (new line(“\n”)을 “<br>”로 변환하는 함수) 수정된 예제 (linkexample2.php) string nl2br (string string) <?PHP $text_array = file (“example.txt”) foreach ($text_array as $line) { print nl2br (htmlentities ($line)); } ?> file(): 파일 전체를 읽어서 배열에 저장하는 함수
일반 텍스트 문서 HTML 문서 (6/6) 웹 연동 기술 수행 결과
HTML 문서 일반 텍스트 문서 (1/2) HTML 문서를 일반 문서로 바꿀 경우 HTML 태그를 삭제하는 방법 웹 연동 기술 HTML 문서를 일반 문서로 바꿀 경우 HTML 문서의 모든 태그를 삭제 <br>을 “엔터”로 변환 HTML 태그를 삭제하는 방법 strip_tags() 함수를 사용 <br>을 엔터 문자로 변환하는 함수는 없음 정규 표현식 이용하여 변환 strip_tags: HTML 태그를 제거함 (http://php.net/manual/kr/function.strip-tags.php) string strip_tags (string str [, string allowable_tags])
HTML 문서 일반 텍스트 문서 (2/2) 예제 (html2txt.php) 웹 연동 기술 예제 (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); ?> grapes lemon pear mango orange apple eregi_replace(): 주어진 패턴을 주어진 스트링으로 변환 (예: <br> “\n”)
Homework #10 (실습 #9) 웹 연동 기술