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