원문 저작 : http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59572&sca=&sfl=wr_subject||wr_content&stx=xml&sop=and&page=3
<기록용으로 남겼습니다>
<하단 개발자 윤석규 님에게 저작권이 있습니다>
<?php
/*------------------------------------------------------------------*
* 개 발 자 : 윤석규
*-------------------------------------------------------------------*
* 이 메 일 :
nanummp3@naver.com
*-------------------------------------------------------------------*
* 홈페이지 :
http://www.ysksoft.com
*-------------------------------------------------------------------*
class ysk
XmlClass {
## private
var $_
xml_parser;
var $_
xml_encoding;
var $_
xml_chk = 'n';
var $_
xml_item = array();
var $_
xml_result = array();
/*
## [실행 1]
xml 열기
-------------------------------------------------------------------------------------------
include './class/ysk
XmlClass.php';
$
xml = new ysk
XmlClass;
$prt = $
xml->
xmlOpen('
http://blog.rss.naver.com/thinkfactory.xml','item');
$count = count($prt['item']);
for($x=0; $x<$count; $x++) {
echo $prt['title'][$x]['value'].'<br>';
echo $prt['link'][$x]['value'].'<br>';
echo $prt['description'][$x]['value'].'<br><br><hr>';
}
-------------------------------------------------------------------------------------------
*/
function
xmlOpen($url, $tag) {
$this->_tag = $tag;
if($fp = fopen($url, 'r')) {
while(!feof ($fp)) {
$
xml_data .= fgets($fp, 4096);
}
fclose ($fp);
$this->_
xmlDefine($
xml_data);
return $this->_
xmlInte();
} else {
$this->_error('
xml open error :
xml 파일열기 실패 => '.$url);
}
}
##
xml 선언
function _
xmlDefine($
xml_data) {
preg_match('/encoding="[^"]+"/', $
xml_data, $pattern);
$this->_
xml_encoding = strtolower(preg_replace('/(encoding=)|(")/', '', $pattern[0]));
$this->_
xml_parser =
xml_parser_create();
xml_parser_set_option($this->_
xml_parser,
XML_OPTION_CASE_FOLDING, 0); //태그 이름을 소문자로 뿌려줌
xml_parse_into_struct($this->_
xml_parser, $
xml_data, $this->_
xml_item, $index);
xml_parser_free($this->_
xml_parser);
}
##
xml 추출
function _
xmlInte() {
foreach($this->_
xml_item as $v) {
if($v['tag'] == $this->_tag && $v['type'] == 'open') {
$this->_
xml_result[$v['tag']][] = '';
$this->_
xml_chk = 'y';
}
if($v['type'] == 'complete' && $this->_
xml_chk == 'y') {
if($this->_
xml_encoding == 'utf-8') {
$this->_
xml_result[$v['tag']][]
= array('value'=>iconv('utf-8', 'euc-kr',
$v['value']),'att'=>iconv('utf-8', 'euc-kr', $v['attributes']));
} else {
$this->_
xml_result[$v['tag']][] = array('value'=>$v['value'],'att'=>$v['attributes']);
}
}
}
return $this->_
xml_result;
}
## 에러표시
function _error($msg='') {
echo $msg;
exit;
}
}
?>