mi-jung choi department of computer science kangwon national university, korea
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 PresentationTRANSCRIPT
Mi-Jung ChoiMi-Jung Choi
Department of Computer ScienceDepartment of Computer Science
Kangwon National University, KoreaKangwon 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)
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)
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);
?>
Web ProgrammingPage 5
수행 결과 (readsite1.php)
URL URL 내용 읽어오기 내용 읽어오기 (2/4)(2/4)웹 연동 기술
Web ProgrammingPage 6
다른 방법
• fopen() 및 fgets() 대신에 readfile() 함수를 사용
• readfile() 함수는 파일의 내용을 읽어서 바로 출력하기 때문에 별도의 읽기 및 출력 과정이 필요하지 않음
• 주의점 : 파일의 이름을 넘겨주는 파라미터에 반드시 사용하는 프로토콜 (http://) 을 지정하는 부분이 들어가야 함
예제 (readsite2.php)
URL URL 내용 읽어오기 내용 읽어오기 (3/4)(3/4)웹 연동 기술
<?PHP
readfile (“http://www.daum.net/”);
?>
Web ProgrammingPage 7
수행 결과 (readsite2.php)
URL URL 내용 읽어오기 내용 읽어오기 (4/4)(4/4)웹 연동 기술
Web ProgrammingPage 8
특정 사이트의 문서에 포함되어 있는 링크만을 읽어올 경우
• <A HREF> 태그로 시작되는 부분을 읽어옴( 예 : <A HREF=“http://cs.kangwon.ac.kr> ..)
• 정규 표현식을 사용하여 태그를 찾음
• 개념적 표현 형태 :<, 임의의 문자들 , a, 임의의 문자들 , href=, 임의의 문자들 , >, 임의의 문자들 , </, 임의의 문자들 , a, 임의의 문자들 , > 순
• 정규 표현식 형태 : “/<.*a.*href=.*>.*<\/.*a.*>/”
링크링크 (link) (link) 읽어오기 읽어오기 (1/3)(1/3)웹 연동 기술
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] 에는 서브 패턴이 저장됨 )
Web ProgrammingPage 10
수행 결과
링크링크 (link) (link) 읽어오기 읽어오기 (3/3)(3/3)웹 연동 기술
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
Web ProgrammingPage 12
출력 결과
<pear> 와 <orange> 가 출력되지 않았음 why? HTML 에서 태그로 인식되었음
일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (2/6)(2/6)웹 연동 기술
Web ProgrammingPage 13
HTML 에서는 ,
• HTML 태그나 “엔터” 문자를 브라우저에서 인식하지 못함
• 이 문제점을 해결하기 위해서는 각 문자를 다른 기호로 나타내어야 함
− 공백 문자
− < < (lt means “less than”)
− > > (gt means “greater than”)
HTML 에서 사용되는 엔티티들을 특수한 문자로 바꿀 경우
• htmlentities() 사용 (c.f., 유사한 함수로 htmlspecialchars() 사용 )
일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (3/6)(3/6)웹 연동 기술
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]]))
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(): 파일 전체를 읽어서 배열에 저장하는 함수
Web ProgrammingPage 16
수행 결과
일반 텍스트 문서 일반 텍스트 문서 HTML HTML 문서 문서 (6/6)(6/6)웹 연동 기술
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])
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”)