블로그   |    태그로그   |    방명록
민준이
전체 (120)
공부 (49)
포트폴리오 (70)
공지사항 (0)
자유게시판 (1)
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
월별보기
'공부/PHP'에 해당되는 글 4건
rss 내용을 파싱하는 간단한 함수입니다.
Category : 공부/PHP Date : 2008/11/21 10:33
2008/11/21 10:33 2008/11/21 10:33
rss 내용을 파싱하는 간단한 함수입니다.
(rss 파일은 fopen이나 fsocket 등등 알아서 읽어오셔야합니다;;)
HTML 파싱용으로도 사용가능합니다 덜덜;;

function _parser($tag, $str){
    preg_match_all("/<".$tag.">(.*)<\/".$tag.">/iUs", $str, $match);
    for($i=0, $total=sizeof($match[1]); $i<$total; $i++){
        $match[1][$i]=str_replace("<![CDATA[", "", $match[1][$i]);
        $match[1][$i]=str_replace("]]>", "", $match[1][$i]);
    }
    return $match[1];
}

원리는 간단합니다.
<a>
  <b>하하하</b>
  <b>
    <c>aaa하하하</c>
    <c>222</c>
  </b>
</a>

이런구조를 파싱하시려고 할때 $tmp 변수에 위 내용이 있다고 가정할때

* a 태그를 가져올때
$a = _parser("a", $tmp);

$a[0]의 값
<b>하하하</b>
  <b>
    <c>aaa하하하</c>
    <c>222</c>
  </b>


* b 태그를 가져올때
$b = _parser("b", $a[0]);

$b[0]의 값
하하하

$b[1]의 값
<c>aaa하하하</c>
<c>222</c>


* c 태그를 가져올때
$c = _parser("c", $b[1]); // 두번째 b 태그에만 c태그가 들어있으므로

$c[0]의 값
aaa하하하

$c[1]의 값
222

----------------------------------------------------------------------------------------------


*  UTF-8로 인코딩 처리하기
 $data 변수에 rss 내용이 있을경우
    if(preg_match("/encoding=\"(.*)\"/Us", $data, $match)){
        if(strtolower($match[1]) != "utf-8"){
            $data=iconv($match[1], "UTF-8", $data);
        }
    }

-------------------------------------------------------------------------------------------------

* 위 정보를 토대로 RSS 파싱하기
$data 변수에 rss 정보가 들어있다고 가정합니다.
        list($channel) = _parser("channel", $data);

        // RSS 제공하는 제목입니다.
    list($channel_title) = _parser("title", $channel);

        // RSS url 입니다.
    list($channel_link) = _parser("link", $channel);

        // RSS 설명입니다.
    list($channel_description) = _parser("description", $channel);

      echo '<h2><a href="'.$channel_link.'" target="_blank">'.$channel_title.'</a> : '.$channel_description.'</h2>'.$list.'</ul>';

    $channel_item = _parser("item", $channel);        
    for($i=0, $total=sizeof($channel_item);$i<$total; $i++){
        $item = $channel_item[$i];
        list($title) = _parser("title", $item); // RSS기사 제목
        list($link) = _parser("link", $item); // RSS기사 url
        list($pubDate) = _parser("pubDate", $item); // RSS기사 날짜
        $pubDate= date("m/d", strtotime($pubDate));

        echo '<li>'.$date.' <a href="'.$link.'">'.$title.'</a></li>';
    }

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
쿼리구문이 시간초과 되는거 방지
Category : 공부/PHP Date : 2008/06/25 17:45
2008/06/25 17:45 2008/06/25 17:45
@set_time_limit(0);

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
랜덤값 창출.. 5,000 이하
Category : 공부/PHP Date : 2008/06/25 17:45
2008/06/25 17:45 2008/06/25 17:45
srand((double) microtime()*1000000);
$rand = rand(1000,5000);

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
주소창 암호화
Category : 공부/PHP Date : 2008/06/25 16:57
2008/06/25 16:57 2008/06/25 16:57
base64_encode($code) ->보낼때
base64_decode($code) -> 사용할때

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
Creative Commons License 블로그 내에 모든 저작물은 크리에이티브 커먼즈코리아 저작자표시 - 비영리 - 변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
최근 올라온 글
블로그 최근 덧글
최근 엮인글
Ultram.
 Ultram respiratory.
Cheap cod ultram.
 Ultram buy ultram online or...
Buy phentermine.
 Buy phentermine.
Purchase valtrex.
 Valtrex.
Adipexdrug addiction order...
 Phentermine online.
즐겨찾기
Today : 14
Yesterday : 39
Total : 13624
Powered by Textcube 1.7.1 : Risoluto
Skin by mulder21c
RSS 주소보기 E-Mail 보내기